<?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>81354</bug_id>
          
          <creation_ts>2012-03-16 08:14:50 -0700</creation_ts>
          <short_desc>[chromium] Don&apos;t occlude on main-thread behind layers/surfaces with impl-thread animations</short_desc>
          <delta_ts>2012-03-18 18:07:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>81363</dependson>
          <blocked>79536</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
    
    <cc>piman</cc>
    
    <cc>reveman</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>580529</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-16 08:14:50 -0700</bug_when>
    <thetext>[chromium] Don&apos;t occlude behind layers/surfaces with impl-animating opacity on main thread</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580676</commentid>
    <comment_count>1</comment_count>
      <attachid>132318</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-16 10:55:24 -0700</bug_when>
    <thetext>Created attachment 132318
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580701</commentid>
    <comment_count>2</comment_count>
      <attachid>132323</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-16 11:19:16 -0700</bug_when>
    <thetext>Created attachment 132323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>580769</commentid>
    <comment_count>3</comment_count>
      <attachid>132340</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-16 12:07:21 -0700</bug_when>
    <thetext>Created attachment 132340
Patch

Remove double negatives.
Include logic so that we don&apos;t use occlusion within a space that we can&apos;t transform to.
 - i.e. If layer can&apos;t be transformed to target reliably, then occlusion in target can&apos;t be applied to the layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581005</commentid>
    <comment_count>4</comment_count>
      <attachid>132340</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-03-16 15:05:29 -0700</bug_when>
    <thetext>Comment on attachment 132340
Patch

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

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:87
&gt; +static inline bool layerOpacityKnown(const CCLayerImpl* /* layer */) { return true; }

slightly better to omit the parameter name completely instead of commenting it out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581009</commentid>
    <comment_count>5</comment_count>
      <attachid>132340</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-16 15:10:28 -0700</bug_when>
    <thetext>Comment on attachment 132340
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:87
&gt;&gt; +static inline bool layerOpacityKnown(const CCLayerImpl* /* layer */) { return true; }
&gt; 
&gt; slightly better to omit the parameter name completely instead of commenting it out

Oh, yes definitely. I thought I saw that in the style guide but now I can&apos;t find it, so yay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581012</commentid>
    <comment_count>6</comment_count>
      <attachid>132391</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-16 15:13:52 -0700</bug_when>
    <thetext>Created attachment 132391
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581060</commentid>
    <comment_count>7</comment_count>
      <attachid>132391</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-16 15:51:49 -0700</bug_when>
    <thetext>Comment on attachment 132391
Patch

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

Looks good.  R=me.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:91
&gt; +static inline bool layerTransformsToScreenKnown(const CCLayerImpl* layer) { return true; }

nit: unused param.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:98
&gt; +static inline bool surfaceTransformsToScreenKnown(const CCRenderSurface* surface) { return true; }

nit: unused param.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581124</commentid>
    <comment_count>8</comment_count>
      <attachid>132391</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-16 17:18:46 -0700</bug_when>
    <thetext>Comment on attachment 132391
Patch

Attachment 132391 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11968453</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581518</commentid>
    <comment_count>9</comment_count>
      <attachid>132507</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-18 16:40:57 -0700</bug_when>
    <thetext>Created attachment 132507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581520</commentid>
    <comment_count>10</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-18 16:42:15 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 132391 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=132391&amp;action=review
&gt; 
&gt; Looks good.  R=me.

Thanks for R!

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:91
&gt; &gt; +static inline bool layerTransformsToScreenKnown(const CCLayerImpl* layer) { return true; }
&gt; 
&gt; nit: unused param.

done

&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:98
&gt; &gt; +static inline bool surfaceTransformsToScreenKnown(const CCRenderSurface* surface) { return true; }
&gt; 
&gt; nit: unused param.

done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581522</commentid>
    <comment_count>11</comment_count>
      <attachid>132509</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-18 16:55:12 -0700</bug_when>
    <thetext>Created attachment 132509
Patch

rebase fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581545</commentid>
    <comment_count>12</comment_count>
      <attachid>132509</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-18 18:07:33 -0700</bug_when>
    <thetext>Comment on attachment 132509
Patch

Clearing flags on attachment: 132509

Committed r111145: &lt;http://trac.webkit.org/changeset/111145&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581547</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-18 18:07:39 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132318</attachid>
            <date>2012-03-16 10:55:24 -0700</date>
            <delta_ts>2012-03-16 11:19:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81354-20120316135523.patch</filename>
            <type>text/plain</type>
            <size>19232</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U3ZmEwZjE0MWFiZWMw
MzdlMDBmMDEwZjI4MWIzOTUwNDAzYmI0Yy4uZWVkNDExYjQ0YTA4N2U5MDVlOGU2ZTZjYTlhNjBi
Y2E1NGI3ODBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMwIEBACiAyMDEyLTAzLTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gRG9u
J3Qgb2NjbHVkZSBvbiBtYWluLXRocmVhZCBiZWhpbmQgbGF5ZXJzL3N1cmZhY2VzIHdpdGggaW1w
bC10aHJlYWQgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODEzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBMYXllcnMgYW5kIHN1cmZhY2VzIGNhbiBoYXZlIGFuIGFuaW1hdGluZyBvcGFj
aXR5IG9yIHRyYW5zbGF0aW9uIG9uIHRoZQorICAgICAgICBpbXBsIHRocmVhZC4gSW4gdGhpcyBj
YXNlLCB0aGUgbWFpbiB0aHJlYWQgZG9lcyBub3Qga25vdyB0aGVpciBhY3R1YWwKKyAgICAgICAg
dmFsdWVzLCBhbmQgdHJlYXRzIHRoZXNlIHZhbHVlcyBhcyAidW5rbm93bnMiLiBUaGlzIG1lYW5z
IHdlIGNhbid0IHVzZQorICAgICAgICB0aGVtIGZvciBtYXJraW5nIGFyZWFzIG9mIHRoZSBzY3Jl
ZW4gYXMgb2NjbHVkZWQuCisKKyAgICAgICAgVW5pdCB0ZXN0OiBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0QW5pbWF0aW9uT3BhY2l0eTBPbk1haW5UaHJlYWQKKyAgICAgICAgICAgICAgICAgICBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5UaHJlYWQKKyAgICAgICAg
ICAgICAgICAgICBDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uVHJhbnNsYXRlT25NYWlu
VGhyZWFkCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1
c2lvblRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJEcmF3c09wYXF1ZUluVGFy
Z2V0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJEcmF3c09w
YXF1ZUluU2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OnN1cmZhY2VEcmF3c09wYXF1ZUluVGFy
Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OnN1cmZhY2VEcmF3c09wYXF1ZUluU2NyZWVuKToKKyAg
ICAgICAgKFdlYkNvcmU6Ojo6ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKToKKyAgICAgICAg
KFdlYkNvcmU6Ojo6bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIpOgorCisyMDEyLTAzLTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gVHJh
bnNmb3JtIGFuaW1hdGlvbiBzdGF0ZSBzaG91bGQgYmUgaW5oZXJpdGVkIGZyb20gcGFyZW50cwog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEzNjMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmNGMyNGZhMjk2N2E2NmZjYzMwNmI2MWMxZmZk
MmQ4ZjQzZWJmYWU3Li4yNmMwYjVjZTJhYTgzYzRmMmFiZWM5ZjRkYWUwYzBmYzAzMjczMDY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDEyLTAzLTE2ICBE
YW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0g
RG9uJ3Qgb2NjbHVkZSBvbiBtYWluLXRocmVhZCBiZWhpbmQgbGF5ZXJzL3N1cmZhY2VzIHdpdGgg
aW1wbC10aHJlYWQgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODEzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHRlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRPcGFjaXR5QW5pbWF0aW9uVG9MYXll
cik6CisgICAgICAgIChXZWJDb3JlOjphZGRUcmFuc2Zvcm1BbmltYXRpb25Ub0xheWVyKToKKyAg
ICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5MU9uTWFpblRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3Bh
Y2l0eTFPbk1haW5UaHJlYWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTBPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
Q0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWluVGhyZWFkOjpydW5N
eVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvblRyYW5zbGF0
ZU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
QW5pbWF0aW9uVHJhbnNsYXRlT25NYWluVGhyZWFkOjpydW5NeVRlc3QpOgorCisyMDEyLTAzLTE2
ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1
bV0gVHJhbnNmb3JtIGFuaW1hdGlvbiBzdGF0ZSBzaG91bGQgYmUgaW5oZXJpdGVkIGZyb20gcGFy
ZW50cwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEz
NjMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKaW5kZXggZTBhM2U0Zjhl
YWUwZTljMDlmZWIxZGFkYmE5ZWE0ODI4M2U1MDk2OC4uNzdlZWVjNDNlNGY0ZmYyYTZiNzM5YmQ4
MzdmNmZjYmFjZTg3NDZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3Bw
CkBAIC04Myw2ICs4Myw1OCBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBl
LCBSZW5kZXJTdXJmYWNlVHlwZT46OmVudGVyVGFyZ2V0UmVuZGVyU3VyZgogICAgIH0KIH0KIAor
c3RhdGljIGlubGluZSBib29sIGxheWVyRHJhd3NPcGFxdWVJblRhcmdldChjb25zdCBMYXllckNo
cm9taXVtKiBsYXllcikKK3sKKyAgICAvLyBNYWluIHRocmVhZCBjb25zdHJ1Y3RzIGhhdmUgZnV6
enkgYW5pbWF0aW5nIHZhbHVlcywgc28gd2UgdHJlYXQgdGhlbSBhcyB1bmtub3ducy4KKyAgICBp
ZiAobGF5ZXItPmRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSB8fCBsYXllci0+ZHJhd1RyYW5zZm9y
bXNBbmltYXRpbmdJblRhcmdldCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJu
IGxheWVyLT5kcmF3T3BhY2l0eSgpID09IDE7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBsYXll
ckRyYXdzT3BhcXVlSW5TY3JlZW4oY29uc3QgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpCit7CisgICAg
Ly8gTWFpbiB0aHJlYWQgY29uc3RydWN0cyBoYXZlIGZ1enp5IGFuaW1hdGluZyB2YWx1ZXMsIHNv
IHdlIHRyZWF0IHRoZW0gYXMgdW5rbm93bnMuCisgICAgaWYgKGxheWVyLT5kcmF3T3BhY2l0eUlz
QW5pbWF0aW5nKCkgfHwgbGF5ZXItPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5TY3JlZW4oKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBsYXllci0+ZHJhd09wYWNpdHkoKSA9
PSAxOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc3VyZmFjZURyYXdzT3BhcXVlSW5UYXJnZXQo
Y29uc3QgUmVuZGVyU3VyZmFjZUNocm9taXVtKiBzdXJmYWNlKQoreworICAgIC8vIE1haW4gdGhy
ZWFkIGNvbnN0cnVjdHMgaGF2ZSBmdXp6eSBhbmltYXRpbmcgdmFsdWVzLCBzbyB3ZSB0cmVhdCB0
aGVtIGFzIHVua25vd25zLgorICAgIGlmIChzdXJmYWNlLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5n
KCkgfHwgc3VyZmFjZS0+ZHJhd1RyYW5zZm9ybXNBbmltYXRpbmdJblRhcmdldCgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHN1cmZhY2UtPmRyYXdPcGFjaXR5KCkgPT0gMTsK
K30KKworc3RhdGljIGlubGluZSBib29sIHN1cmZhY2VEcmF3c09wYXF1ZUluU2NyZWVuKGNvbnN0
IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogc3VyZmFjZSkKK3sKKyAgICAvLyBNYWluIHRocmVhZCBj
b25zdHJ1Y3RzIGhhdmUgZnV6enkgYW5pbWF0aW5nIHZhbHVlcywgc28gd2UgdHJlYXQgdGhlbSBh
cyB1bmtub3ducy4KKyAgICBpZiAoc3VyZmFjZS0+ZHJhd09wYWNpdHlJc0FuaW1hdGluZygpIHx8
IHN1cmZhY2UtPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5TY3JlZW4oKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIHJldHVybiBzdXJmYWNlLT5kcmF3T3BhY2l0eSgpID09IDE7Cit9CisK
K3N0YXRpYyBpbmxpbmUgYm9vbCBsYXllckRyYXdzT3BhcXVlSW5UYXJnZXQoY29uc3QgQ0NMYXll
ckltcGwqIGxheWVyKQoreworICAgIHJldHVybiBsYXllci0+ZHJhd09wYWNpdHkoKSA9PSAxOwor
fQorCitzdGF0aWMgaW5saW5lIGJvb2wgbGF5ZXJEcmF3c09wYXF1ZUluU2NyZWVuKGNvbnN0IEND
TGF5ZXJJbXBsKiBsYXllcikKK3sKKyAgICByZXR1cm4gbGF5ZXItPmRyYXdPcGFjaXR5KCkgPT0g
MTsKK30KKworc3RhdGljIGlubGluZSBib29sIHN1cmZhY2VEcmF3c09wYXF1ZUluVGFyZ2V0KGNv
bnN0IENDUmVuZGVyU3VyZmFjZSogc3VyZmFjZSkKK3sKKyAgICByZXR1cm4gc3VyZmFjZS0+ZHJh
d09wYWNpdHkoKSA9PSAxOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc3VyZmFjZURyYXdzT3Bh
cXVlSW5TY3JlZW4oY29uc3QgQ0NSZW5kZXJTdXJmYWNlKiBzdXJmYWNlKQoreworICAgIHJldHVy
biBzdXJmYWNlLT5kcmF3T3BhY2l0eSgpID09IDE7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CiB2b2lkIENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmZpbmlzaGVkVGFyZ2V0UmVu
ZGVyU3VyZmFjZShjb25zdCBMYXllclR5cGUqIG93bmluZ0xheWVyLCBjb25zdCBSZW5kZXJTdXJm
YWNlVHlwZSogZmluaXNoZWRUYXJnZXQpCiB7CkBAIC05MiwxMCArMTQ0LDEwIEBAIHZvaWQgQ0NP
Y2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6ZmluaXNo
ZWRUYXJnZXRSZW5kZXJTCiAgICAgLy8gTWFrZSBzdXJlIHdlIGtub3cgYWJvdXQgdGhlIHRhcmdl
dCBzdXJmYWNlLgogICAgIGVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShmaW5pc2hlZFRhcmdldCk7
CiAKLSAgICBpZiAob3duaW5nTGF5ZXItPm1hc2tMYXllcigpIHx8IGZpbmlzaGVkVGFyZ2V0LT5k
cmF3T3BhY2l0eSgpIDwgMSB8fCBmaW5pc2hlZFRhcmdldC0+ZmlsdGVycygpLmhhc0ZpbHRlclRo
YXRBZmZlY3RzT3BhY2l0eSgpKSB7CisgICAgaWYgKCFzdXJmYWNlRHJhd3NPcGFxdWVJblNjcmVl
bihmaW5pc2hlZFRhcmdldCkgfHwgb3duaW5nTGF5ZXItPm1hc2tMYXllcigpIHx8IGZpbmlzaGVk
VGFyZ2V0LT5maWx0ZXJzKCkuaGFzRmlsdGVyVGhhdEFmZmVjdHNPcGFjaXR5KCkpCiAgICAgICAg
IG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuID0gUmVnaW9uKCk7CisgICAgaWYgKCFz
dXJmYWNlRHJhd3NPcGFxdWVJblRhcmdldChmaW5pc2hlZFRhcmdldCkgfHwgb3duaW5nTGF5ZXIt
Pm1hc2tMYXllcigpIHx8IGZpbmlzaGVkVGFyZ2V0LT5maWx0ZXJzKCkuaGFzRmlsdGVyVGhhdEFm
ZmVjdHNPcGFjaXR5KCkpCiAgICAgICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0
ID0gUmVnaW9uKCk7Ci0gICAgfQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZW5kZXJTdXJmYWNl
VHlwZT4KQEAgLTIxOSwxNSArMjcxLDE3IEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bWFya09jY2x1ZGVkQmVoaW5kTGF5CiAgICAg
aWYgKG1fc3RhY2suaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobGF5ZXIt
PmRyYXdPcGFjaXR5KCkgIT0gMSkKKyAgICBpZiAoIWxheWVyRHJhd3NPcGFxdWVJblNjcmVlbihs
YXllcikgJiYgIWxheWVyRHJhd3NPcGFxdWVJblRhcmdldChsYXllcikpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1NjcmVlblNwYWNlID0gY29u
dGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllcik7CiAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggY29udGVudFRvVGFyZ2V0U3VyZmFjZSA9IGNvbnRlbnRUb1RhcmdldFN1
cmZhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllcik7CiAKICAgICAvLyBGSVhNRTogUmVtb3Zl
IG1fdXNlUGFpbnRUcmFja2luZyB3aGVuIHBhaW50IHRyYWNraW5nIGlzIG9uIGZvciBwYWludCBj
dWxsaW5nLgotICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuLnVuaXRlKGNvbXB1
dGVPY2NsdXNpb25CZWhpbmRMYXllcjxMYXllclR5cGU+KGxheWVyLCBjb250ZW50VG9TY3JlZW5T
cGFjZSwgbV91c2VQYWludFRyYWNraW5nKSk7Ci0gICAgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9u
SW5UYXJnZXQudW5pdGUoY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyPExheWVyVHlwZT4obGF5
ZXIsIGNvbnRlbnRUb1RhcmdldFN1cmZhY2UsIG1fdXNlUGFpbnRUcmFja2luZykpOworICAgIGlm
IChsYXllckRyYXdzT3BhcXVlSW5TY3JlZW4obGF5ZXIpKQorICAgICAgICBtX3N0YWNrLmxhc3Qo
KS5vY2NsdXNpb25JblNjcmVlbi51bml0ZShjb21wdXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5
ZXJUeXBlPihsYXllciwgY29udGVudFRvU2NyZWVuU3BhY2UsIG1fdXNlUGFpbnRUcmFja2luZykp
OworICAgIGlmIChsYXllckRyYXdzT3BhcXVlSW5UYXJnZXQobGF5ZXIpKQorICAgICAgICBtX3N0
YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldC51bml0ZShjb21wdXRlT2NjbHVzaW9uQmVoaW5k
TGF5ZXI8TGF5ZXJUeXBlPihsYXllciwgY29udGVudFRvVGFyZ2V0U3VyZmFjZSwgbV91c2VQYWlu
dFRyYWNraW5nKSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCB0ZXN0Q29udGVudFJlY3RPY2Ns
dWRlZChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGNv
bnN0IFJlZ2lvbiYgb2NjbHVzaW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKaW5kZXggZGVjYTRhY2VmYmU2Njkx
MGNhNTFjYjVlNjFkMzRlYjg3NDFhZTgyOS4uNWE2MmZiYTMzYzM3NjA2YmFkN2MxYjNhOTkwZDUx
OTJmM2IxOTQ5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09j
Y2x1c2lvblRyYWNrZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAi
TGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRyYW5zZm9y
bWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgi
CisjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgog
I2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKQEAgLTE3OTQsNCArMTc5NiwxODAg
QEAgcHJvdGVjdGVkOgogCiBNQUlOX1RIUkVBRF9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RQ
ZXJzcGVjdGl2ZVRyYW5zZm9ybUJlaGluZENhbWVyYSk7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZT4KK3N0YXRpYyBpbnQgYWRkT3BhY2l0eUFuaW1hdGlvblRvTGF5ZXIoTGF5ZXJUeXBl
KiBsYXllciwgZmxvYXQgc3RhcnRWYWx1ZSwgZmxvYXQgZW5kVmFsdWUsIGRvdWJsZSBkdXJhdGlv
bikKK3sKKyAgICBzdGF0aWMgaW50IGlkID0gMDsKKyAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVl
TGlzdCB2YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOworICAgIHZhbHVlcy5pbnNlcnQo
bmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoMCwgc3RhcnRWYWx1ZSkpOworICAgIHZhbHVlcy5pbnNl
cnQobmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoZHVyYXRpb24sIGVuZFZhbHVlKSk7CisKKyAgICBS
ZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOworICAgIGFu
aW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24pOworCisgICAgSW50U2l6ZSBib3hTaXplOwor
ICAgIGxheWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkQW5pbWF0aW9uKHZhbHVl
cywgYm94U2l6ZSwgYW5pbWF0aW9uLmdldCgpLCBpZCwgMCwgMCk7CisgICAgcmV0dXJuIGlkKys7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK3N0YXRpYyBpbnQgYWRkVHJhbnNm
b3JtQW5pbWF0aW9uVG9MYXllcihMYXllclR5cGUqIGxheWVyLCBkb3VibGUgZHVyYXRpb24pCit7
CisgICAgc3RhdGljIGludCBpZCA9IDA7CisgICAgV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3Qg
dmFsdWVzKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOworCisgICAgVHJhbnNmb3Jt
T3BlcmF0aW9ucyBvcGVyYXRpb25zMTsKKyAgICBvcGVyYXRpb25zMS5vcGVyYXRpb25zKCkuYXBw
ZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgyLCBGaXhlZCks
IExlbmd0aCgwLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKKyAg
ICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgwLCAmb3BlcmF0aW9u
czEpKTsKKworICAgIFJlZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3Jl
YXRlKCk7CisgICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisKKyAgICBJbnRT
aXplIGJveFNpemU7CisgICAgbGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGRB
bmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksIGlkLCAwLCAwKTsKKyAg
ICByZXR1cm4gaWQrKzsKK30KKwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5
ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkxT25NYWlu
VGhyZWFkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVy
cz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5
cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290
KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRo
aXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1
cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExh
eWVyVHlwZSogc3VyZmFjZUNoaWxkID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHN1cmZhY2Us
IHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMzAw
KSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJm
YWNlQ2hpbGQyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHN1cmZhY2VDaGlsZCwgdGhpcy0+
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAzMDApLCB0cnVl
KTsKKworICAgICAgICBhZGRPcGFjaXR5QW5pbWF0aW9uVG9MYXllcihsYXllciwgMCwgMSwgMTAp
OworICAgICAgICBhZGRPcGFjaXR5QW5pbWF0aW9uVG9MYXllcihzdXJmYWNlLCAwLCAxLCAxMCk7
CisgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisKKyAgICAgICAgRVhQRUNUX1RS
VUUobGF5ZXItPmRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSk7CisgICAgICAgIEVYUEVDVF9GQUxT
RShzdXJmYWNlLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOworICAgICAgICBFWFBFQ1RfVFJV
RShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSk7CisK
KyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVy
VHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVj
dCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxkMik7CisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMTAwLCAwLCAyMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZCk7CisgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAwLCAxMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAg
ICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2UpOworICAgICAgICBF
WFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgICAgIG9j
Y2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZSwgc3VyZmFjZS0+cmVu
ZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJm
YWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgLy8gT2NjbHVzaW9uIGlzIGxv
c3Qgd2hlbiBsZWF2aW5nIHRoZSBhbmltYXRpbmcgc3VyZmFjZS4KKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgwLCAwLCAzMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworCisgICAgICAgIG9jY2x1
c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIC8vIE9jY2x1c2lv
biBpcyBub3QgYWRkZWQgZm9yIHRoZSBhbmltYXRpbmcgbGF5ZXIuCisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRl
bnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9OworCitN
QUlOX1RIUkVBRF9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5MU9u
TWFpblRocmVhZCk7CisKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4K
K2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5ME9uTWFpblRocmVh
ZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsK
K3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICB0eXBlbmFt
ZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlz
LT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOwor
ICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5j
cmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBl
czo6Q29udGVudExheWVyVHlwZSogc3VyZmFjZSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNl
KHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIHN1cmZhY2VDaGlsZCA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihzdXJmYWNlLCB0aGlz
LT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDMwMCksIHRy
dWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogc3VyZmFjZUNo
aWxkMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihzdXJmYWNlQ2hpbGQsIHRoaXMtPmlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMzAwKSwgdHJ1ZSk7CisK
KyAgICAgICAgYWRkT3BhY2l0eUFuaW1hdGlvblRvTGF5ZXIobGF5ZXIsIDEsIDAsIDEwKTsKKyAg
ICAgICAgYWRkT3BhY2l0eUFuaW1hdGlvblRvTGF5ZXIoc3VyZmFjZSwgMSwgMCwgMTApOworICAg
ICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOworCisgICAgICAgIEVYUEVDVF9UUlVFKGxh
eWVyLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Vy
ZmFjZS0+ZHJhd09wYWNpdHlJc0FuaW1hdGluZygpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3Vy
ZmFjZS0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOworCisgICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUs
IHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2Uoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZDIpOworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwMCwgMCwgMjAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlQ2hpbGQpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDIwMCwgMCwgMTAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChzdXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBvY2NsdXNp
b24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UsIHN1cmZhY2UtPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIC8vIE9jY2x1c2lvbiBpcyBsb3N0IHdo
ZW4gbGVhdmluZyB0aGUgYW5pbWF0aW5nIHN1cmZhY2UuCisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICAvLyBPY2NsdXNpb24gaXMg
bm90IGFkZGVkIGZvciB0aGUgYW5pbWF0aW5nIGxheWVyLgorICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgfQorfTsKKworTUFJTl9U
SFJFQURfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTBPbk1haW5U
aHJlYWQpOworCit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFz
cyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uVHJhbnNsYXRlT25NYWluVGhyZWFkIDog
cHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJv
dGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0
ZURyYXdpbmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpD
b250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFy
ZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAs
IDMwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSog
c3VyZmFjZUNoaWxkID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHN1cmZhY2UsIHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMzAwKSwgdHJ1ZSk7
CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlQ2hpbGQy
ID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHN1cmZhY2VDaGlsZCwgdGhpcy0+aWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAzMDApLCB0cnVlKTsKKworICAg
ICAgICBhZGRUcmFuc2Zvcm1BbmltYXRpb25Ub0xheWVyKGxheWVyLCAxMCk7CisgICAgICAgIGFk
ZFRyYW5zZm9ybUFuaW1hdGlvblRvTGF5ZXIoc3VyZmFjZSwgMTApOworICAgICAgICB0aGlzLT5j
YWxjRHJhd0V0YyhwYXJlbnQpOworCisgICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5kcmF3VHJh
bnNmb3Jtc0FuaW1hdGluZ0luVGFyZ2V0KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+
ZHJhd1RyYW5zZm9ybXNBbmltYXRpbmdJblNjcmVlbigpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUo
c3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGluZ0luVGFyZ2V0
KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdU
cmFuc2Zvcm1zQW5pbWF0aW5nSW5TY3JlZW4oKSk7CisgICAgICAgIC8vIFRoZSBzdXJmYWNlIG93
bmluZyBsYXllciBkb2Vzbid0IGFuaW1hdGUgYWdhaW5zdCBpdHMgb3duIHN1cmZhY2UuCisgICAg
ICAgIEVYUEVDVF9GQUxTRShzdXJmYWNlLT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGluZ0luVGFyZ2V0
KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShzdXJmYWNlLT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGlu
Z0luU2NyZWVuKCkpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVu
YW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4g
b2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAg
ICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZDIpOwor
ICAgICAgICAvLyBUaGUgbGF5ZXIgaXMgbW92aW5nIGluIHNjcmVlbiBzcGFjZSBidXQgbm90IHJl
bGF0aXZlIHRvIGl0cyB0YXJnZXQsIHNvIG9jY2x1c2lvbiBzaG91bGQgaGFwcGVuIGluIGl0cyB0
YXJnZXQgc3BhY2Ugb25seS4KKyAgICAgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAwLCAxMDAsIDMwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgxMDAsIDAsIDIwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworCisgICAgICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlQ2hpbGQpOworICAgICAgICAv
LyBUaGUgbGF5ZXIgaXMgbW92aW5nIGluIHNjcmVlbiBzcGFjZSBidXQgbm90IHJlbGF0aXZlIHRv
IGl0cyB0YXJnZXQsIHNvIG9jY2x1c2lvbiBzaG91bGQgaGFwcGVuIGluIGl0cyB0YXJnZXQgc3Bh
Y2Ugb25seS4KKyAgICAgICAgRVhQRUNUX0VRKDB1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVj
dCgwLCAwLCAyMDAsIDMwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5i
b3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgyMDAsIDAsIDEwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChz
dXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsKKyAgICAgICAgLy8gVGhlIGxheWVyIGlz
IG1vdmluZyBpbiBzY3JlZW4gc3BhY2UgYnV0IG5vdCByZWxhdGl2ZSB0byBpdHMgdGFyZ2V0LCBz
byBvY2NsdXNpb24gc2hvdWxkIGhhcHBlbiBpbiBpdHMgdGFyZ2V0IHNwYWNlIG9ubHkuCisgICAg
ICAgIEVYUEVDVF9FUSgwdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0
cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMzAwLCAz
MDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5y
ZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwg
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAw
LCAzMDAsIDMwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJT
dXJmYWNlKHN1cmZhY2UsIHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1
c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7
CisgICAgICAgIC8vIFRoZSBzdXJmYWNlIGlzIG1vdmluZyBpbiB0aGUgc2NyZWVuIGFuZCBpbiBp
dHMgdGFyZ2V0LCBzbyBhbGwgb2NjbHVzaW9uIGlzIGxvc3Qgd2hlbiBsZWF2aW5nIGl0LgorICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSwgb2NjbHVzaW9uLnVu
b2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisK
KyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAg
ICAgLy8gVGhlIGxheWVyIGlzIGFuaW1hdGluZyBpbiB0aGUgc2NyZWVuIGFuZCBpbiBpdHMgdGFy
Z2V0LCBzbyBubyBvY2NsdXNpb24gaXMgYWRkZWQuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9OworCitNQUlOX1RIUkVB
RF9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25UcmFuc2xhdGVPbk1haW5UaHJl
YWQpOworCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132323</attachid>
            <date>2012-03-16 11:19:16 -0700</date>
            <delta_ts>2012-03-16 12:07:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81354-20120316141915.patch</filename>
            <type>text/plain</type>
            <size>19039</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U3ZmEwZjE0MWFiZWMw
MzdlMDBmMDEwZjI4MWIzOTUwNDAzYmI0Yy4uNzgzMmVkZmUxN2E5NzZmNjNkMmRkZDQ0MTdkNzg3
ZWMwYzcwMjFhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMyIEBACiAyMDEyLTAzLTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gRG9u
J3Qgb2NjbHVkZSBvbiBtYWluLXRocmVhZCBiZWhpbmQgbGF5ZXJzL3N1cmZhY2VzIHdpdGggaW1w
bC10aHJlYWQgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODEzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBMYXllcnMgYW5kIHN1cmZhY2VzIGNhbiBoYXZlIGFuIGFuaW1hdGluZyBvcGFj
aXR5IG9yIHRyYW5zbGF0aW9uIG9uIHRoZQorICAgICAgICBpbXBsIHRocmVhZC4gSW4gdGhpcyBj
YXNlLCB0aGUgbWFpbiB0aHJlYWQgZG9lcyBub3Qga25vdyB0aGVpciBhY3R1YWwKKyAgICAgICAg
dmFsdWVzLCBhbmQgdHJlYXRzIHRoZXNlIHZhbHVlcyBhcyAidW5rbm93bnMiLiBUaGlzIG1lYW5z
IHdlIGNhbid0IHVzZQorICAgICAgICB0aGVtIGZvciBtYXJraW5nIGFyZWFzIG9mIHRoZSBzY3Jl
ZW4gYXMgb2NjbHVkZWQuCisKKyAgICAgICAgVW5pdCB0ZXN0OiBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0QW5pbWF0aW9uT3BhY2l0eTBPbk1haW5UaHJlYWQKKyAgICAgICAgICAgICAgICAgICBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5UaHJlYWQKKyAgICAgICAg
ICAgICAgICAgICBDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uVHJhbnNsYXRlT25NYWlu
VGhyZWFkCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1
c2lvblRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJPcGFjaXR5VW5rbm93bik6
CisgICAgICAgIChXZWJDb3JlOjpsYXllclRyYW5zZm9ybXNUb1RhcmdldFVua25vd24pOgorICAg
ICAgICAoV2ViQ29yZTo6bGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Vbmtub3duKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU9wYWNpdHlVbmtub3duKToKKyAg
ICAgICAgKFdlYkNvcmU6OnN1cmZhY2VUcmFuc2Zvcm1zVG9UYXJnZXRVbmtub3duKToKKyAgICAg
ICAgKFdlYkNvcmU6OnN1cmZhY2VUcmFuc2Zvcm1zVG9TY3JlZW5Vbmtub3duKToKKyAgICAgICAg
KFdlYkNvcmU6Ojo6ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNv
cmU6Ojo6bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIpOgorCisyMDEyLTAzLTE2ICBEYW5hIEphbnNl
bnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gVHJhbnNmb3Jt
IGFuaW1hdGlvbiBzdGF0ZSBzaG91bGQgYmUgaW5oZXJpdGVkIGZyb20gcGFyZW50cwogICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEzNjMKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwppbmRleCBmNGMyNGZhMjk2N2E2NmZjYzMwNmI2MWMxZmZkMmQ4ZjQz
ZWJmYWU3Li4yNmMwYjVjZTJhYTgzYzRmMmFiZWM5ZjRkYWUwYzBmYzAzMjczMDY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIzIEBACiAyMDEyLTAzLTE2ICBEYW5hIEph
bnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gRG9uJ3Qg
b2NjbHVkZSBvbiBtYWluLXRocmVhZCBiZWhpbmQgbGF5ZXJzL3N1cmZhY2VzIHdpdGggaW1wbC10
aHJlYWQgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODEzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIHRlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRPcGFjaXR5QW5pbWF0aW9uVG9MYXllcik6Cisg
ICAgICAgIChXZWJDb3JlOjphZGRUcmFuc2Zvcm1BbmltYXRpb25Ub0xheWVyKToKKyAgICAgICAg
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5MU9uTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTFP
bk1haW5UaHJlYWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0
QW5pbWF0aW9uT3BhY2l0eTBPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2Ns
dXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWluVGhyZWFkOjpydW5NeVRlc3Qp
OgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvblRyYW5zbGF0ZU9uTWFp
blRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0
aW9uVHJhbnNsYXRlT25NYWluVGhyZWFkOjpydW5NeVRlc3QpOgorCisyMDEyLTAzLTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtjaHJvbWl1bV0gVHJh
bnNmb3JtIGFuaW1hdGlvbiBzdGF0ZSBzaG91bGQgYmUgaW5oZXJpdGVkIGZyb20gcGFyZW50cwog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODEzNjMKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NPY2NsdXNpb25UcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKaW5kZXggZTBhM2U0ZjhlYWUwZTlj
MDlmZWIxZGFkYmE5ZWE0ODI4M2U1MDk2OC4uZmVlM2E1YzlmYThmZjQ0NjM5MTgyMGQ0MzhlMTky
MWJlZGZkNTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCkBAIC04
Myw2ICs4MywyMCBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZT46OmVudGVyVGFyZ2V0UmVuZGVyU3VyZgogICAgIH0KIH0KIAorc3RhdGlj
IGlubGluZSBib29sIGxheWVyT3BhY2l0eVVua25vd24oY29uc3QgTGF5ZXJDaHJvbWl1bSogbGF5
ZXIpIHsgcmV0dXJuIGxheWVyLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCk7IH0KK3N0YXRpYyBp
bmxpbmUgYm9vbCBsYXllck9wYWNpdHlVbmtub3duKGNvbnN0IENDTGF5ZXJJbXBsKiAvKiBsYXll
ciAqLykgeyByZXR1cm4gZmFsc2U7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBsYXllclRyYW5zZm9y
bXNUb1RhcmdldFVua25vd24oY29uc3QgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIHsgcmV0dXJuIGxh
eWVyLT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGluZ0luVGFyZ2V0KCk7IH0KK3N0YXRpYyBpbmxpbmUg
Ym9vbCBsYXllclRyYW5zZm9ybXNUb1RhcmdldFVua25vd24oY29uc3QgQ0NMYXllckltcGwqIC8q
IGxheWVyICovKSB7IHJldHVybiBmYWxzZTsgfQorc3RhdGljIGlubGluZSBib29sIGxheWVyVHJh
bnNmb3Jtc1RvU2NyZWVuVW5rbm93bihjb25zdCBMYXllckNocm9taXVtKiBsYXllcikgeyByZXR1
cm4gbGF5ZXItPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5TY3JlZW4oKTsgfQorc3RhdGljIGlu
bGluZSBib29sIGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuVW5rbm93bihjb25zdCBDQ0xheWVySW1w
bCogbGF5ZXIpIHsgcmV0dXJuIGZhbHNlOyB9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzdXJmYWNl
T3BhY2l0eVVua25vd24oY29uc3QgUmVuZGVyU3VyZmFjZUNocm9taXVtKiBzdXJmYWNlKSB7IHJl
dHVybiBzdXJmYWNlLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCk7IH0KK3N0YXRpYyBpbmxpbmUg
Ym9vbCBzdXJmYWNlT3BhY2l0eVVua25vd24oY29uc3QgQ0NSZW5kZXJTdXJmYWNlKiAvKiBzdXJm
YWNlICovKSB7IHJldHVybiBmYWxzZTsgfQorc3RhdGljIGlubGluZSBib29sIHN1cmZhY2VUcmFu
c2Zvcm1zVG9UYXJnZXRVbmtub3duKGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSogc3VyZmFj
ZSkgeyByZXR1cm4gc3VyZmFjZS0+ZHJhd1RyYW5zZm9ybXNBbmltYXRpbmdJblRhcmdldCgpOyB9
CitzdGF0aWMgaW5saW5lIGJvb2wgc3VyZmFjZVRyYW5zZm9ybXNUb1RhcmdldFVua25vd24oY29u
c3QgQ0NSZW5kZXJTdXJmYWNlKiAvKiBzdXJmYWNlICovKSB7IHJldHVybiBmYWxzZTsgfQorc3Rh
dGljIGlubGluZSBib29sIHN1cmZhY2VUcmFuc2Zvcm1zVG9TY3JlZW5Vbmtub3duKGNvbnN0IFJl
bmRlclN1cmZhY2VDaHJvbWl1bSogc3VyZmFjZSkgeyByZXR1cm4gc3VyZmFjZS0+ZHJhd1RyYW5z
Zm9ybXNBbmltYXRpbmdJblNjcmVlbigpOyB9CitzdGF0aWMgaW5saW5lIGJvb2wgc3VyZmFjZVRy
YW5zZm9ybXNUb1NjcmVlblVua25vd24oY29uc3QgQ0NSZW5kZXJTdXJmYWNlKiBzdXJmYWNlKSB7
IHJldHVybiBmYWxzZTsgfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1l
IFJlbmRlclN1cmZhY2VUeXBlPgogdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlw
ZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3Qg
TGF5ZXJUeXBlKiBvd25pbmdMYXllciwgY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIGZpbmlzaGVk
VGFyZ2V0KQogewpAQCAtOTIsOSArMTA2LDE0IEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFz
ZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6ZmluaXNoZWRUYXJnZXRSZW5kZXJTCiAg
ICAgLy8gTWFrZSBzdXJlIHdlIGtub3cgYWJvdXQgdGhlIHRhcmdldCBzdXJmYWNlLgogICAgIGVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShmaW5pc2hlZFRhcmdldCk7CiAKLSAgICBpZiAob3duaW5n
TGF5ZXItPm1hc2tMYXllcigpIHx8IGZpbmlzaGVkVGFyZ2V0LT5kcmF3T3BhY2l0eSgpIDwgMSB8
fCBmaW5pc2hlZFRhcmdldC0+ZmlsdGVycygpLmhhc0ZpbHRlclRoYXRBZmZlY3RzT3BhY2l0eSgp
KSB7CisgICAgaWYgKG93bmluZ0xheWVyLT5tYXNrTGF5ZXIoKSB8fCBzdXJmYWNlT3BhY2l0eVVu
a25vd24oZmluaXNoZWRUYXJnZXQpIHx8IGZpbmlzaGVkVGFyZ2V0LT5kcmF3T3BhY2l0eSgpIDwg
MSB8fCBmaW5pc2hlZFRhcmdldC0+ZmlsdGVycygpLmhhc0ZpbHRlclRoYXRBZmZlY3RzT3BhY2l0
eSgpKSB7CiAgICAgICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuID0gUmVnaW9u
KCk7CiAgICAgICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0ID0gUmVnaW9uKCk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN1cmZhY2VUcmFuc2Zvcm1zVG9UYXJnZXRVbmtu
b3duKGZpbmlzaGVkVGFyZ2V0KSkKKyAgICAgICAgICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lv
bkluVGFyZ2V0ID0gUmVnaW9uKCk7CisgICAgICAgIGlmIChzdXJmYWNlVHJhbnNmb3Jtc1RvU2Ny
ZWVuVW5rbm93bihmaW5pc2hlZFRhcmdldCkpCisgICAgICAgICAgICBtX3N0YWNrLmxhc3QoKS5v
Y2NsdXNpb25JblNjcmVlbiA9IFJlZ2lvbigpOwogICAgIH0KIH0KIApAQCAtMjE5LDE1ICsyMzgs
MTcgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGU+OjptYXJrT2NjbHVkZWRCZWhpbmRMYXkKICAgICBpZiAobV9zdGFjay5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsYXllci0+ZHJhd09wYWNpdHkoKSAhPSAxKQor
ICAgIGlmIChsYXllck9wYWNpdHlVbmtub3duKGxheWVyKSB8fCBsYXllci0+ZHJhd09wYWNpdHko
KSA8IDEpCiAgICAgICAgIHJldHVybjsKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRl
bnRUb1NjcmVlblNwYWNlID0gY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBl
PihsYXllcik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvVGFyZ2V0U3VyZmFj
ZSA9IGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllcik7CiAK
ICAgICAvLyBGSVhNRTogUmVtb3ZlIG1fdXNlUGFpbnRUcmFja2luZyB3aGVuIHBhaW50IHRyYWNr
aW5nIGlzIG9uIGZvciBwYWludCBjdWxsaW5nLgotICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lv
bkluU2NyZWVuLnVuaXRlKGNvbXB1dGVPY2NsdXNpb25CZWhpbmRMYXllcjxMYXllclR5cGU+KGxh
eWVyLCBjb250ZW50VG9TY3JlZW5TcGFjZSwgbV91c2VQYWludFRyYWNraW5nKSk7Ci0gICAgbV9z
dGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQudW5pdGUoY29tcHV0ZU9jY2x1c2lvbkJlaGlu
ZExheWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1RhcmdldFN1cmZhY2UsIG1fdXNlUGFp
bnRUcmFja2luZykpOworICAgIGlmICghbGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Vbmtub3duKGxh
eWVyKSkKKyAgICAgICAgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4udW5pdGUoY29t
cHV0ZU9jY2x1c2lvbkJlaGluZExheWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1NjcmVl
blNwYWNlLCBtX3VzZVBhaW50VHJhY2tpbmcpKTsKKyAgICBpZiAoIWxheWVyVHJhbnNmb3Jtc1Rv
VGFyZ2V0VW5rbm93bihsYXllcikpCisgICAgICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbklu
VGFyZ2V0LnVuaXRlKGNvbXB1dGVPY2NsdXNpb25CZWhpbmRMYXllcjxMYXllclR5cGU+KGxheWVy
LCBjb250ZW50VG9UYXJnZXRTdXJmYWNlLCBtX3VzZVBhaW50VHJhY2tpbmcpKTsKIH0KIAogc3Rh
dGljIGlubGluZSBib29sIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNvbnN0IEludFJlY3QmIGNv
bnRlbnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29udGVudFNwYWNlVHJhbnNm
b3JtLCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgY29uc3QgUmVnaW9uJiBvY2NsdXNpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJh
Y2tlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRy
YWNrZXJUZXN0LmNwcAppbmRleCBkZWNhNGFjZWZiZTY2OTEwY2E1MWNiNWU2MWQzNGViODc0MWFl
ODI5Li41YTYyZmJhMzNjMzc2MDZiYWQ3YzFiM2E5OTBkNTE5MmYzYjE5NDkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVz
dC5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCiAjaW5j
bHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNs
dWRlICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5j
bHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVU
aHJlYWRQcm94eS5oIgpAQCAtMTc5NCw0ICsxNzk2LDE4MCBAQCBwcm90ZWN0ZWQ6CiAKIE1BSU5f
VEhSRUFEX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFBlcnNwZWN0aXZlVHJhbnNmb3JtQmVo
aW5kQ2FtZXJhKTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgorc3RhdGljIGludCBh
ZGRPcGFjaXR5QW5pbWF0aW9uVG9MYXllcihMYXllclR5cGUqIGxheWVyLCBmbG9hdCBzdGFydFZh
bHVlLCBmbG9hdCBlbmRWYWx1ZSwgZG91YmxlIGR1cmF0aW9uKQoreworICAgIHN0YXRpYyBpbnQg
aWQgPSAwOworICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhBbmltYXRlZFBy
b3BlcnR5T3BhY2l0eSk7CisgICAgdmFsdWVzLmluc2VydChuZXcgRmxvYXRBbmltYXRpb25WYWx1
ZSgwLCBzdGFydFZhbHVlKSk7CisgICAgdmFsdWVzLmluc2VydChuZXcgRmxvYXRBbmltYXRpb25W
YWx1ZShkdXJhdGlvbiwgZW5kVmFsdWUpKTsKKworICAgIFJlZlB0cjxBbmltYXRpb24+IGFuaW1h
dGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CisgICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihk
dXJhdGlvbik7CisKKyAgICBJbnRTaXplIGJveFNpemU7CisgICAgbGF5ZXItPmxheWVyQW5pbWF0
aW9uQ29udHJvbGxlcigpLT5hZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24u
Z2V0KCksIGlkLCAwLCAwKTsKKyAgICByZXR1cm4gaWQrKzsKK30KKwordGVtcGxhdGU8dHlwZW5h
bWUgTGF5ZXJUeXBlPgorc3RhdGljIGludCBhZGRUcmFuc2Zvcm1BbmltYXRpb25Ub0xheWVyKExh
eWVyVHlwZSogbGF5ZXIsIGRvdWJsZSBkdXJhdGlvbikKK3sKKyAgICBzdGF0aWMgaW50IGlkID0g
MDsKKyAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMx
OworICAgIG9wZXJhdGlvbnMxLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDIsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJh
bnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOworICAgIHZhbHVlcy5pbnNlcnQobmV3IFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZvcGVyYXRpb25zMSkpOworCisgICAgUmVmUHRyPEFu
aW1hdGlvbj4gYW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKKyAgICBhbmltYXRpb24t
PnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKworICAgIEludFNpemUgYm94U2l6ZTsKKyAgICBsYXll
ci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNp
emUsIGFuaW1hdGlvbi5nZXQoKSwgaWQsIDAsIDApOworICAgIHJldHVybiBpZCsrOworfQorCit0
ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09jY2x1c2lv
blRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5UaHJlYWQgOiBwdWJsaWMgQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAg
dm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRM
YXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAgdHlwZW5hbWUg
VHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVy
KHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUo
MzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIHN1cmZhY2UgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7
CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlQ2hpbGQg
PSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoc3VyZmFjZSwgdGhpcy0+aWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgdHlw
ZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZhY2VDaGlsZDIgPSB0aGlzLT5jcmVh
dGVEcmF3aW5nTGF5ZXIoc3VyZmFjZUNoaWxkLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDMwMCksIHRydWUpOworCisgICAgICAgIGFkZE9wYWNp
dHlBbmltYXRpb25Ub0xheWVyKGxheWVyLCAwLCAxLCAxMCk7CisgICAgICAgIGFkZE9wYWNpdHlB
bmltYXRpb25Ub0xheWVyKHN1cmZhY2UsIDAsIDEsIDEwKTsKKyAgICAgICAgdGhpcy0+Y2FsY0Ry
YXdFdGMocGFyZW50KTsKKworICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+ZHJhd09wYWNpdHlJ
c0FuaW1hdGluZygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN1cmZhY2UtPmRyYXdPcGFjaXR5
SXNBbmltYXRpbmcoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1cmZhY2UtPnJlbmRlclN1cmZh
Y2UoKS0+ZHJhd09wYWNpdHlJc0FuaW1hdGluZygpKTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6
UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsK
KworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UtPnJl
bmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihzdXJmYWNlQ2hpbGQyKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDAs
IDIwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNlLCBJbnRS
ZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIoc3VyZmFjZUNoaWxkKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgy
MDAsIDAsIDEwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNl
LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MCwgMCwgMCwgMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50
UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0
UmVuZGVyU3VyZmFjZShzdXJmYWNlLCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJm
YWNlKCkpOworICAgICAgICAvLyBPY2NsdXNpb24gaXMgbG9zdCB3aGVuIGxlYXZpbmcgdGhlIGFu
aW1hdGluZyBzdXJmYWNlLgorICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDMw
MCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3Qo
MCwgMCwgMzAwLCAzMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGlu
ZExheWVyKGxheWVyKTsKKyAgICAgICAgLy8gT2NjbHVzaW9uIGlzIG5vdCBhZGRlZCBmb3IgdGhl
IGFuaW1hdGluZyBsYXllci4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAz
MDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0
KDAsIDAsIDMwMCwgMzAwKSkpOworICAgIH0KK307CisKK01BSU5fVEhSRUFEX1RFU1QoQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkxT25NYWluVGhyZWFkKTsKKwordGVtcGxh
dGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWluVGhyZWFkIDogcHVibGljIENDT2NjbHVzaW9u
VHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVkOgorICAgIHZvaWQg
cnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJU
eXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVz
OjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJl
bnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwg
MzAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBz
dXJmYWNlID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAg
ICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogc3VyZmFjZUNoaWxkID0gdGhp
cy0+Y3JlYXRlRHJhd2luZ0xheWVyKHN1cmZhY2UsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlQ2hpbGQyID0gdGhpcy0+Y3JlYXRlRHJh
d2luZ0xheWVyKHN1cmZhY2VDaGlsZCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMTAwLCAzMDApLCB0cnVlKTsKKworICAgICAgICBhZGRPcGFjaXR5QW5p
bWF0aW9uVG9MYXllcihsYXllciwgMSwgMCwgMTApOworICAgICAgICBhZGRPcGFjaXR5QW5pbWF0
aW9uVG9MYXllcihzdXJmYWNlLCAxLCAwLCAxMCk7CisgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRj
KHBhcmVudCk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUobGF5ZXItPmRyYXdPcGFjaXR5SXNBbmlt
YXRpbmcoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShzdXJmYWNlLT5kcmF3T3BhY2l0eUlzQW5p
bWF0aW5nKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkt
PmRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSk7CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRl
clN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAg
ICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLT5yZW5kZXJT
dXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3Vy
ZmFjZUNoaWxkMik7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAwLCAyMDAs
IDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgw
LCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKHN1cmZhY2VDaGlsZCk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMjAwLCAw
LCAxMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50
UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKHN1cmZhY2UpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAs
IDAsIDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3Qo
MCwgMCwgMzAwLCAzMDApKSk7CisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRl
clN1cmZhY2Uoc3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2Nj
bHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgp
KTsKKyAgICAgICAgLy8gT2NjbHVzaW9uIGlzIGxvc3Qgd2hlbiBsZWF2aW5nIHRoZSBhbmltYXRp
bmcgc3VyZmFjZS4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAzMDAsIDMw
MCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAs
IDMwMCwgMzAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXll
cihsYXllcik7CisgICAgICAgIC8vIE9jY2x1c2lvbiBpcyBub3QgYWRkZWQgZm9yIHRoZSBhbmlt
YXRpbmcgbGF5ZXIuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMzAwLCAz
MDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAw
LCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9OworCitNQUlOX1RIUkVBRF9URVNUKENDT2NjbHVzaW9u
VHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5ME9uTWFpblRocmVhZCk7CisKK3RlbXBsYXRlPGNs
YXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRl
c3RBbmltYXRpb25UcmFuc2xhdGVPbk1haW5UaHJlYWQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5N
eVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUq
IHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNv
bnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwg
dGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDAp
LCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZh
Y2UgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAg
IHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlQ2hpbGQgPSB0aGlzLT5j
cmVhdGVEcmF3aW5nTGF5ZXIoc3VyZmFjZSwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMjAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlw
ZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZhY2VDaGlsZDIgPSB0aGlzLT5jcmVhdGVEcmF3aW5n
TGF5ZXIoc3VyZmFjZUNoaWxkLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgxMDAsIDMwMCksIHRydWUpOworCisgICAgICAgIGFkZFRyYW5zZm9ybUFuaW1h
dGlvblRvTGF5ZXIobGF5ZXIsIDEwKTsKKyAgICAgICAgYWRkVHJhbnNmb3JtQW5pbWF0aW9uVG9M
YXllcihzdXJmYWNlLCAxMCk7CisgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisK
KyAgICAgICAgRVhQRUNUX1RSVUUobGF5ZXItPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5UYXJn
ZXQoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGlu
Z0luU2NyZWVuKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShzdXJmYWNlLT5yZW5kZXJTdXJmYWNl
KCktPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5UYXJnZXQoKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd1RyYW5zZm9ybXNBbmltYXRpbmdJblNj
cmVlbigpKTsKKyAgICAgICAgLy8gVGhlIHN1cmZhY2Ugb3duaW5nIGxheWVyIGRvZXNuJ3QgYW5p
bWF0ZSBhZ2FpbnN0IGl0cyBvd24gc3VyZmFjZS4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN1cmZh
Y2UtPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5UYXJnZXQoKSk7CisgICAgICAgIEVYUEVDVF9U
UlVFKHN1cmZhY2UtPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5TY3JlZW4oKSk7CisKKyAgICAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwg
dHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxkMik7CisgICAgICAgIC8vIFRoZSBsYXllciBp
cyBtb3ZpbmcgaW4gc2NyZWVuIHNwYWNlIGJ1dCBub3QgcmVsYXRpdmUgdG8gaXRzIHRhcmdldCwg
c28gb2NjbHVzaW9uIHNob3VsZCBoYXBwZW4gaW4gaXRzIHRhcmdldCBzcGFjZSBvbmx5LgorICAg
ICAgICBFWFBFQ1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwg
MzAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCku
cmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMCwg
MjAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2UsIEludFJl
Y3QoMCwgMCwgMzAwLCAzMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJl
aGluZExheWVyKHN1cmZhY2VDaGlsZCk7CisgICAgICAgIC8vIFRoZSBsYXllciBpcyBtb3Zpbmcg
aW4gc2NyZWVuIHNwYWNlIGJ1dCBub3QgcmVsYXRpdmUgdG8gaXRzIHRhcmdldCwgc28gb2NjbHVz
aW9uIHNob3VsZCBoYXBwZW4gaW4gaXRzIHRhcmdldCBzcGFjZSBvbmx5LgorICAgICAgICBFWFBF
Q1RfRVEoMHUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXpl
KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDIwMCwgMzAwKSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5z
aXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDIwMCwgMCwgMTAwLCAzMDAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwg
MzAwLCAzMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVy
KHN1cmZhY2UpOworICAgICAgICAvLyBUaGUgbGF5ZXIgaXMgbW92aW5nIGluIHNjcmVlbiBzcGFj
ZSBidXQgbm90IHJlbGF0aXZlIHRvIGl0cyB0YXJnZXQsIHNvIG9jY2x1c2lvbiBzaG91bGQgaGFw
cGVuIGluIGl0cyB0YXJnZXQgc3BhY2Ugb25seS4KKyAgICAgICAgRVhQRUNUX0VRKDB1LCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAzMDAsIDMwMCksIG9jY2x1c2lvbi5vY2NsdXNp
b25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2Nj
bHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworCisgICAg
ICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZSwgc3VyZmFj
ZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5k
ZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgLy8gVGhlIHN1cmZh
Y2UgaXMgbW92aW5nIGluIHRoZSBzY3JlZW4gYW5kIGluIGl0cyB0YXJnZXQsIHNvIGFsbCBvY2Ns
dXNpb24gaXMgbG9zdCB3aGVuIGxlYXZpbmcgaXQuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBh
cmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICAvLyBUaGUgbGF5ZXIgaXMgYW5p
bWF0aW5nIGluIHRoZSBzY3JlZW4gYW5kIGluIGl0cyB0YXJnZXQsIHNvIG5vIG9jY2x1c2lvbiBp
cyBhZGRlZC4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAzMDAsIDMwMCks
IG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMw
MCwgMzAwKSkpOworICAgIH0KK307CisKK01BSU5fVEhSRUFEX1RFU1QoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdEFuaW1hdGlvblRyYW5zbGF0ZU9uTWFpblRocmVhZCk7CisKIH0gLy8gbmFtZXNwYWNl
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132340</attachid>
            <date>2012-03-16 12:07:21 -0700</date>
            <delta_ts>2012-03-16 15:13:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81354-20120316150719.patch</filename>
            <type>text/plain</type>
            <size>24710</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U3ZmEwZjE0MWFiZWMw
MzdlMDBmMDEwZjI4MWIzOTUwNDAzYmI0Yy4uZmRlMzNkMzQyYjMyMjU0MjRhYzM2ODYzNmE1Y2Ji
OTEwMmI0YzQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4IEBACiAyMDEyLTAzLTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gRG9u
J3Qgb2NjbHVkZSBvbiBtYWluLXRocmVhZCBiZWhpbmQgbGF5ZXJzL3N1cmZhY2VzIHdpdGggaW1w
bC10aHJlYWQgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODEzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBMYXllcnMgYW5kIHN1cmZhY2VzIGNhbiBoYXZlIGFuIGFuaW1hdGluZyBvcGFj
aXR5IG9yIHRyYW5zbGF0aW9uIG9uIHRoZQorICAgICAgICBpbXBsIHRocmVhZC4gSW4gdGhpcyBj
YXNlLCB0aGUgbWFpbiB0aHJlYWQgZG9lcyBub3Qga25vdyB0aGVpciBhY3R1YWwKKyAgICAgICAg
dmFsdWVzLCBhbmQgdHJlYXRzIHRoZXNlIHZhbHVlcyBhcyAidW5rbm93bnMiLiBUaGlzIG1lYW5z
IHdlIGNhbid0IHVzZQorICAgICAgICB0aGVtIGZvciBtYXJraW5nIGFyZWFzIG9mIHRoZSBzY3Jl
ZW4gYXMgb2NjbHVkZWQsIGFuZCB3ZSBjYW4ndCBjb25zaWRlcgorICAgICAgICBhIHBhcnQgb2Yg
YSBsYXllciBvY2NsdWRlZCBpbiBhIHNwYWNlIHRoYXQgd2UgY2FuIG5vdCByZWxpYWJseSB0cmFu
c2Zvcm0KKyAgICAgICAgdG8uCisKKyAgICAgICAgVW5pdCB0ZXN0OiBDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTBPbk1haW5UaHJlYWQKKyAgICAgICAgICAgICAgICAgICBD
Q09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5UaHJlYWQKKyAgICAg
ICAgICAgICAgICAgICBDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uVHJhbnNsYXRlT25N
YWluVGhyZWFkCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09j
Y2x1c2lvblRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJPcGFjaXR5S25vd24p
OgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bik6CisgICAg
ICAgIChXZWJDb3JlOjpsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU9wYWNpdHlVbmtub3duKToKKyAgICAg
ICAgKFdlYkNvcmU6OnN1cmZhY2VUcmFuc2Zvcm1zVG9UYXJnZXRVbmtub3duKToKKyAgICAgICAg
KFdlYkNvcmU6OnN1cmZhY2VUcmFuc2Zvcm1zVG9TY3JlZW5Vbmtub3duKToKKyAgICAgICAgKFdl
YkNvcmU6Ojo6ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRl
bnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6OjptYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjo6Om9jY2x1ZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Ojo6dW5vY2NsdWRlZENvbnRlbnRSZWN0KToKKworMjAxMi0wMy0xNiAgRGFu
YSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIFRy
YW5zZm9ybSBhbmltYXRpb24gc3RhdGUgc2hvdWxkIGJlIGluaGVyaXRlZCBmcm9tIHBhcmVudHMK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMzYzCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjRjMjRmYTI5NjdhNjZmY2MzMDZiNjFjMWZm
ZDJkOGY0M2ViZmFlNy4uMjZjMGI1Y2UyYWE4M2M0ZjJhYmVjOWY0ZGFlMGMwZmMwMzI3MzA2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMyBAQAogMjAxMi0wMy0xNiAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1d
IERvbid0IG9jY2x1ZGUgb24gbWFpbi10aHJlYWQgYmVoaW5kIGxheWVycy9zdXJmYWNlcyB3aXRo
IGltcGwtdGhyZWFkIGFuaW1hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxMzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6YWRkT3BhY2l0eUFuaW1hdGlvblRvTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVHJhbnNmb3JtQW5pbWF0aW9uVG9MYXllcik6Cisg
ICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5UaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9w
YWNpdHkxT25NYWluVGhyZWFkOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5ME9uTWFpblRocmVhZDo6cnVu
TXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25UcmFuc2xh
dGVPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVz
dEFuaW1hdGlvblRyYW5zbGF0ZU9uTWFpblRocmVhZDo6cnVuTXlUZXN0KToKKworMjAxMi0wMy0x
NiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21p
dW1dIFRyYW5zZm9ybSBhbmltYXRpb24gc3RhdGUgc2hvdWxkIGJlIGluaGVyaXRlZCBmcm9tIHBh
cmVudHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgx
MzYzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCmluZGV4IGUwYTNlNGY4
ZWFlMGU5YzA5ZmViMWRhZGJhOWVhNDgyODNlNTA5NjguLjAxNWUyNzVlODQ5MmYzMjJkM2U4MzBh
MWJiNzA2YmE0YWUyMWJiMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNw
cApAQCAtODMsNiArODMsMjAgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlw
ZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjplbnRlclRhcmdldFJlbmRlclN1cmYKICAgICB9CiB9CiAK
K3N0YXRpYyBpbmxpbmUgYm9vbCBsYXllck9wYWNpdHlLbm93bihjb25zdCBMYXllckNocm9taXVt
KiBsYXllcikgeyByZXR1cm4gIWxheWVyLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCk7IH0KK3N0
YXRpYyBpbmxpbmUgYm9vbCBsYXllck9wYWNpdHlLbm93bihjb25zdCBDQ0xheWVySW1wbCogLyog
bGF5ZXIgKi8pIHsgcmV0dXJuIHRydWU7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBsYXllclRyYW5z
Zm9ybXNUb1RhcmdldEtub3duKGNvbnN0IExheWVyQ2hyb21pdW0qIGxheWVyKSB7IHJldHVybiAh
bGF5ZXItPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5UYXJnZXQoKTsgfQorc3RhdGljIGlubGlu
ZSBib29sIGxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24oY29uc3QgQ0NMYXllckltcGwqIC8q
IGxheWVyICovKSB7IHJldHVybiB0cnVlOyB9CitzdGF0aWMgaW5saW5lIGJvb2wgbGF5ZXJUcmFu
c2Zvcm1zVG9TY3JlZW5Lbm93bihjb25zdCBMYXllckNocm9taXVtKiBsYXllcikgeyByZXR1cm4g
IWxheWVyLT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGluZ0luU2NyZWVuKCk7IH0KK3N0YXRpYyBpbmxp
bmUgYm9vbCBsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGNvbnN0IENDTGF5ZXJJbXBsKiBs
YXllcikgeyByZXR1cm4gdHJ1ZTsgfQorCitzdGF0aWMgaW5saW5lIGJvb2wgc3VyZmFjZU9wYWNp
dHlLbm93bihjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHN1cmZhY2UpIHsgcmV0dXJuICFz
dXJmYWNlLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCk7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBz
dXJmYWNlT3BhY2l0eUtub3duKGNvbnN0IENDUmVuZGVyU3VyZmFjZSogLyogc3VyZmFjZSAqLykg
eyByZXR1cm4gdHJ1ZTsgfQorc3RhdGljIGlubGluZSBib29sIHN1cmZhY2VUcmFuc2Zvcm1zVG9U
YXJnZXRLbm93bihjb25zdCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIHN1cmZhY2UpIHsgcmV0dXJu
ICFzdXJmYWNlLT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGluZ0luVGFyZ2V0KCk7IH0KK3N0YXRpYyBp
bmxpbmUgYm9vbCBzdXJmYWNlVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24oY29uc3QgQ0NSZW5kZXJT
dXJmYWNlKiAvKiBzdXJmYWNlICovKSB7IHJldHVybiB0cnVlOyB9CitzdGF0aWMgaW5saW5lIGJv
b2wgc3VyZmFjZVRyYW5zZm9ybXNUb1NjcmVlbktub3duKGNvbnN0IFJlbmRlclN1cmZhY2VDaHJv
bWl1bSogc3VyZmFjZSkgeyByZXR1cm4gIXN1cmZhY2UtPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5n
SW5TY3JlZW4oKTsgfQorc3RhdGljIGlubGluZSBib29sIHN1cmZhY2VUcmFuc2Zvcm1zVG9TY3Jl
ZW5Lbm93bihjb25zdCBDQ1JlbmRlclN1cmZhY2UqIHN1cmZhY2UpIHsgcmV0dXJuIHRydWU7IH0K
KwogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlw
ZT4KIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VU
eXBlPjo6ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKGNvbnN0IExheWVyVHlwZSogb3duaW5n
TGF5ZXIsIGNvbnN0IFJlbmRlclN1cmZhY2VUeXBlKiBmaW5pc2hlZFRhcmdldCkKIHsKQEAgLTky
LDkgKzEwNiwxNSBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZT46OmZpbmlzaGVkVGFyZ2V0UmVuZGVyUwogICAgIC8vIE1ha2Ugc3VyZSB3
ZSBrbm93IGFib3V0IHRoZSB0YXJnZXQgc3VyZmFjZS4KICAgICBlbnRlclRhcmdldFJlbmRlclN1
cmZhY2UoZmluaXNoZWRUYXJnZXQpOwogCi0gICAgaWYgKG93bmluZ0xheWVyLT5tYXNrTGF5ZXIo
KSB8fCBmaW5pc2hlZFRhcmdldC0+ZHJhd09wYWNpdHkoKSA8IDEgfHwgZmluaXNoZWRUYXJnZXQt
PmZpbHRlcnMoKS5oYXNGaWx0ZXJUaGF0QWZmZWN0c09wYWNpdHkoKSkgeworICAgIC8vIElmIHRo
ZSBvY2NsdXNpb24gd2l0aGluIHRoZSBzdXJmYWNlIGNhbiBub3QgYmUgYXBwbGllZCB0byB0aGlu
Z3Mgb3V0c2lkZSBvZiB0aGUgc3VyZmFjZSdzIHN1YnRyZWUsIHRoZW4gY2xlYXIgdGhlIG9jY2x1
c2lvbiBoZXJlIHNvIGl0IHdvbid0IGJlIHVzZWQuCisgICAgaWYgKG93bmluZ0xheWVyLT5tYXNr
TGF5ZXIoKSB8fCAhc3VyZmFjZU9wYWNpdHlLbm93bihmaW5pc2hlZFRhcmdldCkgfHwgZmluaXNo
ZWRUYXJnZXQtPmRyYXdPcGFjaXR5KCkgPCAxIHx8IGZpbmlzaGVkVGFyZ2V0LT5maWx0ZXJzKCku
aGFzRmlsdGVyVGhhdEFmZmVjdHNPcGFjaXR5KCkpIHsKICAgICAgICAgbV9zdGFjay5sYXN0KCku
b2NjbHVzaW9uSW5TY3JlZW4gPSBSZWdpb24oKTsKICAgICAgICAgbV9zdGFjay5sYXN0KCkub2Nj
bHVzaW9uSW5UYXJnZXQgPSBSZWdpb24oKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXN1
cmZhY2VUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihmaW5pc2hlZFRhcmdldCkpCisgICAgICAgICAg
ICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCA9IFJlZ2lvbigpOworICAgICAgICBp
ZiAoIXN1cmZhY2VUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihmaW5pc2hlZFRhcmdldCkpCisgICAg
ICAgICAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbiA9IFJlZ2lvbigpOwogICAg
IH0KIH0KIApAQCAtMTUxLDYgKzE3MSw3IEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bGVhdmVUb1RhcmdldFJlbmRlclN1CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CiBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtKGNvbnN0IExheWVyVHlwZSogbGF5ZXIp
CiB7CisgICAgQVNTRVJUKGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpKTsKICAg
ICBJbnRTaXplIGJvdW5kc0luTGF5ZXJTcGFjZSA9IGxheWVyLT5ib3VuZHMoKTsKICAgICBJbnRT
aXplIGJvdW5kc0luQ29udGVudFNwYWNlID0gbGF5ZXItPmNvbnRlbnRCb3VuZHMoKTsKIApAQCAt
MTY5LDYgKzE5MCw3IEBAIHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVu
dFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgTGF5ZXJUeXBlCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYXllclR5cGU+CiBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRU
b1RhcmdldFN1cmZhY2VUcmFuc2Zvcm0oY29uc3QgTGF5ZXJUeXBlKiBsYXllcikKIHsKKyAgICBB
U1NFUlQobGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihsYXllcikpOwogICAgIEludFNpemUg
Ym91bmRzSW5MYXllclNwYWNlID0gbGF5ZXItPmJvdW5kcygpOwogICAgIEludFNpemUgYm91bmRz
SW5Db250ZW50U3BhY2UgPSBsYXllci0+Y29udGVudEJvdW5kcygpOwogCkBAIC0yMTksMTUgKzI0
MSwxNCBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJm
YWNlVHlwZT46Om1hcmtPY2NsdWRlZEJlaGluZExheQogICAgIGlmIChtX3N0YWNrLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGxheWVyLT5kcmF3T3BhY2l0eSgpICE9IDEp
CisgICAgaWYgKCFsYXllck9wYWNpdHlLbm93bihsYXllcikgfHwgbGF5ZXItPmRyYXdPcGFjaXR5
KCkgPCAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250
ZW50VG9TY3JlZW5TcGFjZSA9IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlw
ZT4obGF5ZXIpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1RhcmdldFN1cmZh
Y2UgPSBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpOwot
CiAgICAgLy8gRklYTUU6IFJlbW92ZSBtX3VzZVBhaW50VHJhY2tpbmcgd2hlbiBwYWludCB0cmFj
a2luZyBpcyBvbiBmb3IgcGFpbnQgY3VsbGluZy4KLSAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNp
b25JblNjcmVlbi51bml0ZShjb21wdXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihs
YXllciwgY29udGVudFRvU2NyZWVuU3BhY2UsIG1fdXNlUGFpbnRUcmFja2luZykpOwotICAgIG1f
c3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0LnVuaXRlKGNvbXB1dGVPY2NsdXNpb25CZWhp
bmRMYXllcjxMYXllclR5cGU+KGxheWVyLCBjb250ZW50VG9UYXJnZXRTdXJmYWNlLCBtX3VzZVBh
aW50VHJhY2tpbmcpKTsKKyAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihsYXll
cikpCisgICAgICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuLnVuaXRlKGNvbXB1
dGVPY2NsdXNpb25CZWhpbmRMYXllcjxMYXllclR5cGU+KGxheWVyLCBjb250ZW50VG9TY3JlZW5T
cGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwgbV91c2VQYWludFRyYWNraW5nKSk7Cisg
ICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24obGF5ZXIpKQorICAgICAgICBtX3N0
YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldC51bml0ZShjb21wdXRlT2NjbHVzaW9uQmVoaW5k
TGF5ZXI8TGF5ZXJUeXBlPihsYXllciwgY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybTxM
YXllclR5cGU+KGxheWVyKSwgbV91c2VQYWludFRyYWNraW5nKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCB0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSwgY29u
c3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVzaW9uKQpAQCAtMjQ5
LDkgKzI3MCw5IEBAIGJvb2wgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlPjo6b2NjbHVkZWQoY29uc3QgTGF5ZXJUCiAKICAgICBBU1NFUlQobGF5ZXIt
PnRhcmdldFJlbmRlclN1cmZhY2UoKSA9PSBtX3N0YWNrLmxhc3QoKS5zdXJmYWNlKTsKIAotICAg
IGlmICh0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb250ZW50UmVjdCwgY29udGVudFRvU2NyZWVu
U3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNw
YWNlLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbikpCisgICAgaWYgKGxheWVyVHJh
bnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpICYmIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNv
bnRlbnRSZWN0LCBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVy
KSwgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbklu
U2NyZWVuKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHRlc3RDb250ZW50UmVjdE9j
Y2x1ZGVkKGNvbnRlbnRSZWN0LCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtPExheWVy
VHlwZT4obGF5ZXIpLCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVyKSwgbV9z
dGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQpKQorICAgIGlmIChsYXllclRyYW5zZm9ybXNU
b1RhcmdldEtub3duKGxheWVyKSAmJiB0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb250ZW50UmVj
dCwgY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwgbGF5
ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllciksIG1fc3RhY2subGFzdCgpLm9jY2x1
c2lvbkluVGFyZ2V0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQpAQCAtMzE3LDEzICszMzgsMTYgQEAgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udGVudFIKICAgICAvLyBX
ZSB3YW50IHRvIHJldHVybiBhIHJlY3QgdGhhdCBjb250YWlucyBhbGwgdGhlIHZpc2libGUgcGFy
dHMgb2YgfGNvbnRlbnRSZWN0fCBpbiBib3RoIHNjcmVlbiBzcGFjZSBhbmQgaW4gdGhlIHRhcmdl
dCBzdXJmYWNlLgogICAgIC8vIFNvIHdlIGZpbmQgdGhlIHZpc2libGUgcGFydHMgb2YgfGNvbnRl
bnRSZWN0fCBpbiBlYWNoIHNwYWNlLCBhbmQgdGFrZSB0aGUgaW50ZXJzZWN0aW9uLgogCi0gICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2UgPSBjb250ZW50VG9TY3Jl
ZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBjb250ZW50VG9UYXJnZXRTdXJmYWNlID0gY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5z
Zm9ybTxMYXllclR5cGU+KGxheWVyKTsKKyAgICBJbnRSZWN0IHVub2NjbHVkZWRJblNjcmVlbiA9
IGNvbnRlbnRSZWN0OworICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVy
KSkKKyAgICAgICAgdW5vY2NsdWRlZEluU2NyZWVuID0gY29tcHV0ZVVub2NjbHVkZWRDb250ZW50
UmVjdChjb250ZW50UmVjdCwgY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBl
PihsYXllciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBtX3N0YWNrLmxhc3QoKS5vY2Ns
dXNpb25JblNjcmVlbik7CiAKLSAgICBJbnRSZWN0IHVub2NjbHVkZWRJblNjcmVlbiA9IGNvbXB1
dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3QsIGNvbnRlbnRUb1NjcmVlblNwYWNl
LCBtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5T
Y3JlZW4pOwogICAgIGlmICh1bm9jY2x1ZGVkSW5TY3JlZW4uaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gSW50UmVjdCgpOwotICAgIEludFJlY3QgdW5vY2NsdWRlZEluVGFyZ2V0ID0gY29tcHV0
ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb250ZW50UmVjdCwgY29udGVudFRvVGFyZ2V0U3VyZmFj
ZSwgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllciksIG1fc3RhY2subGFzdCgp
Lm9jY2x1c2lvbkluVGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuIHVub2NjbHVkZWRJblNjcmVlbjsK
KworICAgIEludFJlY3QgdW5vY2NsdWRlZEluVGFyZ2V0ID0gY29udGVudFJlY3Q7CisgICAgaWYg
KGxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24obGF5ZXIpKQorICAgICAgICB1bm9jY2x1ZGVk
SW5UYXJnZXQgPSBjb21wdXRlVW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0LCBjb250
ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBsYXllclNjaXNz
b3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVyKSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5U
YXJnZXQpOwogCiAgICAgcmV0dXJuIGludGVyc2VjdGlvbih1bm9jY2x1ZGVkSW5TY3JlZW4sIHVu
b2NjbHVkZWRJblRhcmdldCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAppbmRleCBkZWNhNGFjZWZiZTY2OTEw
Y2E1MWNiNWU2MWQzNGViODc0MWFlODI5Li5lY2FkMmY5YjhjNDc3ZjRlMmUyYTgzOTI0NTMyOTE3
ZGY2MmQ1NzVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2Nj
bHVzaW9uVHJhY2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJM
YXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3Jt
YXRpb25NYXRyaXguaCIKKyNpbmNsdWRlICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIK
KyNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAj
aW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgpAQCAtMTc5NCw0ICsxNzk2LDIwNiBA
QCBwcm90ZWN0ZWQ6CiAKIE1BSU5fVEhSRUFEX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFBl
cnNwZWN0aXZlVHJhbnNmb3JtQmVoaW5kQ2FtZXJhKTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5
ZXJUeXBlPgorc3RhdGljIGludCBhZGRPcGFjaXR5QW5pbWF0aW9uVG9MYXllcihMYXllclR5cGUq
IGxheWVyLCBmbG9hdCBzdGFydFZhbHVlLCBmbG9hdCBlbmRWYWx1ZSwgZG91YmxlIGR1cmF0aW9u
KQoreworICAgIHN0YXRpYyBpbnQgaWQgPSAwOworICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVM
aXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7CisgICAgdmFsdWVzLmluc2VydChu
ZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgwLCBzdGFydFZhbHVlKSk7CisgICAgdmFsdWVzLmluc2Vy
dChuZXcgRmxvYXRBbmltYXRpb25WYWx1ZShkdXJhdGlvbiwgZW5kVmFsdWUpKTsKKworICAgIFJl
ZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CisgICAgYW5p
bWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisKKyAgICBJbnRTaXplIGJveFNpemU7Cisg
ICAgbGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGRBbmltYXRpb24odmFsdWVz
LCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksIGlkLCAwLCAwKTsKKyAgICByZXR1cm4gaWQrKzsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgorc3RhdGljIGludCBhZGRUcmFuc2Zv
cm1BbmltYXRpb25Ub0xheWVyKExheWVyVHlwZSogbGF5ZXIsIGRvdWJsZSBkdXJhdGlvbikKK3sK
KyAgICBzdGF0aWMgaW50IGlkID0gMDsKKyAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2
YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CisKKyAgICBUcmFuc2Zvcm1P
cGVyYXRpb25zIG9wZXJhdGlvbnMxOworICAgIG9wZXJhdGlvbnMxLm9wZXJhdGlvbnMoKS5hcHBl
bmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDIsIEZpeGVkKSwg
TGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOworICAg
IHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZvcGVyYXRpb25z
MSkpOworCisgICAgUmVmUHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVh
dGUoKTsKKyAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKworICAgIEludFNp
emUgYm94U2l6ZTsKKyAgICBsYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmFkZEFu
aW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlvbi5nZXQoKSwgaWQsIDAsIDApOworICAg
IHJldHVybiBpZCsrOworfQorCit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXll
cnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5U
aHJlYWQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJz
PiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlw
ZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3Qo
dGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDAp
KTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhp
cy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUg
VHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZhY2UgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3Vy
ZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5
ZXJUeXBlKiBzdXJmYWNlQ2hpbGQgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoc3VyZmFjZSwg
dGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAzMDAp
LCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZh
Y2VDaGlsZDIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoc3VyZmFjZSwgdGhpcy0+aWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAzMDApLCB0cnVlKTsKKwor
ICAgICAgICBhZGRPcGFjaXR5QW5pbWF0aW9uVG9MYXllcihsYXllciwgMCwgMSwgMTApOworICAg
ICAgICBhZGRPcGFjaXR5QW5pbWF0aW9uVG9MYXllcihzdXJmYWNlLCAwLCAxLCAxMCk7CisgICAg
ICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUobGF5
ZXItPmRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShzdXJm
YWNlLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShzdXJm
YWNlLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSk7CisKKyAgICAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwg
dHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxkMik7CisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMTAwLCAwLCAyMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9u
Lm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZCk7CisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMjAwLCAwLCAxMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2UpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgICAgIG9jY2x1c2lv
bi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3Vy
ZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgLy8gT2NjbHVzaW9uIGlzIGxvc3Qgd2hl
biBsZWF2aW5nIHRoZSBhbmltYXRpbmcgc3VyZmFjZS4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgwLCAwLCAzMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIC8vIE9jY2x1c2lvbiBpcyBu
b3QgYWRkZWQgZm9yIHRoZSBhbmltYXRpbmcgbGF5ZXIuCisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9OworCitNQUlOX1RI
UkVBRF9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5MU9uTWFpblRo
cmVhZCk7CisKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNz
IENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5ME9uTWFpblRocmVhZCA6IHB1
YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3Rl
Y3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICB0eXBlbmFtZSBUeXBl
czo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgICAg
ICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVE
cmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29u
dGVudExheWVyVHlwZSogc3VyZmFjZSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVu
dCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAz
MDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1
cmZhY2VDaGlsZCA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihzdXJmYWNlLCB0aGlzLT5pZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDMwMCksIHRydWUpOwor
ICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogc3VyZmFjZUNoaWxkMiA9
IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihzdXJmYWNlLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDMwMCksIHRydWUpOworCisgICAgICAgIGFk
ZE9wYWNpdHlBbmltYXRpb25Ub0xheWVyKGxheWVyLCAxLCAwLCAxMCk7CisgICAgICAgIGFkZE9w
YWNpdHlBbmltYXRpb25Ub0xheWVyKHN1cmZhY2UsIDEsIDAsIDEwKTsKKyAgICAgICAgdGhpcy0+
Y2FsY0RyYXdFdGMocGFyZW50KTsKKworICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+ZHJhd09w
YWNpdHlJc0FuaW1hdGluZygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN1cmZhY2UtPmRyYXdP
cGFjaXR5SXNBbmltYXRpbmcoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1cmZhY2UtPnJlbmRl
clN1cmZhY2UoKS0+ZHJhd09wYWNpdHlJc0FuaW1hdGluZygpKTsKKworICAgICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBU
eXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZh
Y2UtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihzdXJmYWNlQ2hpbGQyKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgx
MDAsIDAsIDIwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNl
LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxkKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgyMDAsIDAsIDEwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChz
dXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMCwgMCwgMCwgMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFj
ZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVk
VGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOworICAgICAgICAvLyBPY2NsdXNpb24gaXMgbG9zdCB3aGVuIGxlYXZpbmcg
dGhlIGFuaW1hdGluZyBzdXJmYWNlLgorICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAs
IDAsIDMwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIElu
dFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgLy8gT2NjbHVzaW9uIGlzIG5vdCBhZGRlZCBm
b3IgdGhlIGFuaW1hdGluZyBsYXllci4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCAzMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgIH0KK307CisKK01BSU5fVEhSRUFEX1RFU1Qo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWluVGhyZWFkKTsKKwor
dGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNp
b25UcmFja2VyVGVzdEFuaW1hdGlvblRyYW5zbGF0ZU9uTWFpblRocmVhZCA6IHB1YmxpYyBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVu
dExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgICAgICB0eXBlbmFt
ZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5
ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVy
VHlwZSogc3VyZmFjZSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCB0cnVl
KTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZhY2VDaGls
ZCA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihzdXJmYWNlLCB0aGlzLT5pZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDMwMCksIHRydWUpOworICAgICAgICB0
eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogc3VyZmFjZUNoaWxkMiA9IHRoaXMtPmNy
ZWF0ZURyYXdpbmdMYXllcihzdXJmYWNlLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgxMDAsIDMwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBl
czo6Q29udGVudExheWVyVHlwZSogc3VyZmFjZTIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFj
ZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDUwLCAzMDApLCB0cnVlKTsKKworICAgICAgICBhZGRUcmFuc2Zvcm1BbmltYXRpb25Ub0xheWVy
KGxheWVyLCAxMCk7CisgICAgICAgIGFkZFRyYW5zZm9ybUFuaW1hdGlvblRvTGF5ZXIoc3VyZmFj
ZSwgMTApOworICAgICAgICBhZGRUcmFuc2Zvcm1BbmltYXRpb25Ub0xheWVyKHN1cmZhY2VDaGls
ZCwgMTApOworICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOworCisgICAgICAgIEVY
UEVDVF9UUlVFKGxheWVyLT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGluZ0luVGFyZ2V0KCkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShsYXllci0+ZHJhd1RyYW5zZm9ybXNBbmltYXRpbmdJblNjcmVlbigp
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3VHJh
bnNmb3Jtc0FuaW1hdGluZ0luVGFyZ2V0KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShzdXJmYWNl
LT5yZW5kZXJTdXJmYWNlKCktPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5TY3JlZW4oKSk7Cisg
ICAgICAgIC8vIFRoZSBzdXJmYWNlIG93bmluZyBsYXllciBkb2Vzbid0IGFuaW1hdGUgYWdhaW5z
dCBpdHMgb3duIHN1cmZhY2UuCisgICAgICAgIEVYUEVDVF9GQUxTRShzdXJmYWNlLT5kcmF3VHJh
bnNmb3Jtc0FuaW1hdGluZ0luVGFyZ2V0KCkpOworICAgICAgICBFWFBFQ1RfVFJVRShzdXJmYWNl
LT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGluZ0luU2NyZWVuKCkpOworICAgICAgICBFWFBFQ1RfVFJV
RShzdXJmYWNlQ2hpbGQtPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5UYXJnZXQoKSk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKHN1cmZhY2VDaGlsZC0+ZHJhd1RyYW5zZm9ybXNBbmltYXRpbmdJblNj
cmVlbigpKTsKKworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAg
ICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZTIpOworICAgICAgICBv
Y2NsdXNpb24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UyLCBzdXJmYWNlMi0+
cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJT
dXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDAsIDAsIDUwLCAzMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFj
ZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9u
SW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBvY2NsdXNpb24uZW50
ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAg
ICAgLy8gVGhlIGxheWVyIGlzIG1vdmluZyBpbiBzY3JlZW4gc3BhY2UgYnV0IG5vdCByZWxhdGl2
ZSB0byBpdHMgdGFyZ2V0LCBzbyBvY2NsdXNpb24gc2hvdWxkIGhhcHBlbiBpbiBpdHMgdGFyZ2V0
IHNwYWNlIG9ubHkuCisgICAgICAgIC8vIEl0IGFsc28gbWVhbnMgdGhhdCB0aGluZ3Mgb2NjbHVk
aW5nIGluIHNjcmVlbiBzcGFjZSAoZS5nLiBzdXJmYWNlMikgY2Fubm90IG9jY2x1ZGUgdGhpcyBs
YXllci4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDMwMCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZUNoaWxkMiwgSW50UmVjdCgwLCAw
LCAxMDAsIDMwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChz
dXJmYWNlQ2hpbGQsIEludFJlY3QoMCwgMCwgNTAsIDMwMCkpKTsKKworICAgICAgICBvY2NsdXNp
b24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxkMik7CisgICAgICAgIEVYUEVD
VF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoc3VyZmFjZUNoaWxkLCBJbnRSZWN0KDAsIDAsIDEw
MCwgMzAwKSkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDUwLCAzMDAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAg
RVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCku
c2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDMwMCks
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3Rz
KCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDAsIDIwMCwg
MzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0KDAs
IDAsIDMwMCwgMzAwKSkpOworCisgICAgICAgIC8vIFRoZSBzdXJmYWNlIGNoaWxkIGlzIG9jY2x1
ZGVkIGJ5IHRoZSBzdXJmYWNlQ2hpbGQyLCBidXQgaXMgbW92aW5nIHJlbGF0aXZlIGl0cyB0YXJn
ZXQgYW5kIHRoZSBzY3JlZW4sIHNvIGl0CisgICAgICAgIC8vIGNhbid0IGJlIG9jY2x1ZGVkLgor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDIwMCwgMzAwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNlQ2hpbGQsIEludFJlY3QoMCwgMCwgMjAwLCAz
MDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoc3VyZmFjZUNo
aWxkLCBJbnRSZWN0KDAsIDAsIDUwLCAzMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZCk7CisgICAgICAgIC8vIFRoZSBsYXllciBp
cyBtb3ZpbmcgaW4gc2NyZWVuIHNwYWNlIGJ1dCBub3QgcmVsYXRpdmUgdG8gaXRzIHRhcmdldCwg
c28gb2NjbHVzaW9uIHNob3VsZCBoYXBwZW4gaW4gaXRzIHRhcmdldCBzcGFjZSBvbmx5LgorICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDUwLCAzMDApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDMwMCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDAsIDIwMCwgMzAwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkp
OworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsK
KyAgICAgICAgLy8gVGhlIGxheWVyIGlzIG1vdmluZyBpbiBzY3JlZW4gc3BhY2UgYnV0IG5vdCBy
ZWxhdGl2ZSB0byBpdHMgdGFyZ2V0LCBzbyBvY2NsdXNpb24gc2hvdWxkIGhhcHBlbiBpbiBpdHMg
dGFyZ2V0IHNwYWNlIG9ubHkuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwg
NTAsIDMwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOwor
ICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCku
cmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDMw
MCwgMzAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNl
KCkucmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAs
IDAsIDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3Qo
MCwgMCwgMzAwLCAzMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVu
ZGVyU3VyZmFjZShzdXJmYWNlLCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBv
Y2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNl
KCkpOworICAgICAgICAvLyBUaGUgc3VyZmFjZSBpcyBtb3ZpbmcgaW4gdGhlIHNjcmVlbiBhbmQg
aW4gaXRzIHRhcmdldCwgc28gYWxsIG9jY2x1c2lvbiBpcyBsb3N0IHdoZW4gbGVhdmluZyBpdC4K
KyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwgMCwgMjUwLCAzMDApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkp
KTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOwor
ICAgICAgICAvLyBUaGUgbGF5ZXIgaXMgYW5pbWF0aW5nIGluIHRoZSBzY3JlZW4gYW5kIGluIGl0
cyB0YXJnZXQsIHNvIG5vIG9jY2x1c2lvbiBpcyBhZGRlZC4KKyAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCg1MCwgMCwgMjUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9OworCitNQUlO
X1RIUkVBRF9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25UcmFuc2xhdGVPbk1h
aW5UaHJlYWQpOworCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132391</attachid>
            <date>2012-03-16 15:13:52 -0700</date>
            <delta_ts>2012-03-18 16:40:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81354-20120316181349.patch</filename>
            <type>text/plain</type>
            <size>24658</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMDA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2U3ZmEwZjE0MWFiZWMw
MzdlMDBmMDEwZjI4MWIzOTUwNDAzYmI0Yy4uZmRlMzNkMzQyYjMyMjU0MjRhYzM2ODYzNmE1Y2Ji
OTEwMmI0YzQwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4IEBACiAyMDEyLTAzLTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFtjaHJvbWl1bV0gRG9u
J3Qgb2NjbHVkZSBvbiBtYWluLXRocmVhZCBiZWhpbmQgbGF5ZXJzL3N1cmZhY2VzIHdpdGggaW1w
bC10aHJlYWQgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODEzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBMYXllcnMgYW5kIHN1cmZhY2VzIGNhbiBoYXZlIGFuIGFuaW1hdGluZyBvcGFj
aXR5IG9yIHRyYW5zbGF0aW9uIG9uIHRoZQorICAgICAgICBpbXBsIHRocmVhZC4gSW4gdGhpcyBj
YXNlLCB0aGUgbWFpbiB0aHJlYWQgZG9lcyBub3Qga25vdyB0aGVpciBhY3R1YWwKKyAgICAgICAg
dmFsdWVzLCBhbmQgdHJlYXRzIHRoZXNlIHZhbHVlcyBhcyAidW5rbm93bnMiLiBUaGlzIG1lYW5z
IHdlIGNhbid0IHVzZQorICAgICAgICB0aGVtIGZvciBtYXJraW5nIGFyZWFzIG9mIHRoZSBzY3Jl
ZW4gYXMgb2NjbHVkZWQsIGFuZCB3ZSBjYW4ndCBjb25zaWRlcgorICAgICAgICBhIHBhcnQgb2Yg
YSBsYXllciBvY2NsdWRlZCBpbiBhIHNwYWNlIHRoYXQgd2UgY2FuIG5vdCByZWxpYWJseSB0cmFu
c2Zvcm0KKyAgICAgICAgdG8uCisKKyAgICAgICAgVW5pdCB0ZXN0OiBDQ09jY2x1c2lvblRyYWNr
ZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTBPbk1haW5UaHJlYWQKKyAgICAgICAgICAgICAgICAgICBD
Q09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5UaHJlYWQKKyAgICAg
ICAgICAgICAgICAgICBDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uVHJhbnNsYXRlT25N
YWluVGhyZWFkCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09j
Y2x1c2lvblRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJPcGFjaXR5S25vd24p
OgorICAgICAgICAoV2ViQ29yZTo6bGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bik6CisgICAg
ICAgIChXZWJDb3JlOjpsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6c3VyZmFjZU9wYWNpdHlVbmtub3duKToKKyAgICAg
ICAgKFdlYkNvcmU6OnN1cmZhY2VUcmFuc2Zvcm1zVG9UYXJnZXRVbmtub3duKToKKyAgICAgICAg
KFdlYkNvcmU6OnN1cmZhY2VUcmFuc2Zvcm1zVG9TY3JlZW5Vbmtub3duKToKKyAgICAgICAgKFdl
YkNvcmU6Ojo6ZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnRl
bnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6OjptYXJrT2Nj
bHVkZWRCZWhpbmRMYXllcik6CisgICAgICAgIChXZWJDb3JlOjo6Om9jY2x1ZGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6Ojo6dW5vY2NsdWRlZENvbnRlbnRSZWN0KToKKworMjAxMi0wMy0xNiAgRGFu
YSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21pdW1dIFRy
YW5zZm9ybSBhbmltYXRpb24gc3RhdGUgc2hvdWxkIGJlIGluaGVyaXRlZCBmcm9tIHBhcmVudHMK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgxMzYzCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggZjRjMjRmYTI5NjdhNjZmY2MzMDZiNjFjMWZm
ZDJkOGY0M2ViZmFlNy4uMjZjMGI1Y2UyYWE4M2M0ZjJhYmVjOWY0ZGFlMGMwZmMwMzI3MzA2OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMyBAQAogMjAxMi0wMy0xNiAg
RGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbY2hyb21pdW1d
IERvbid0IG9jY2x1ZGUgb24gbWFpbi10aHJlYWQgYmVoaW5kIGxheWVycy9zdXJmYWNlcyB3aXRo
IGltcGwtdGhyZWFkIGFuaW1hdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTgxMzU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiB0ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6YWRkT3BhY2l0eUFuaW1hdGlvblRvTGF5
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6YWRkVHJhbnNmb3JtQW5pbWF0aW9uVG9MYXllcik6Cisg
ICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5UaHJl
YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9w
YWNpdHkxT25NYWluVGhyZWFkOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWluVGhyZWFkKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5ME9uTWFpblRocmVhZDo6cnVu
TXlUZXN0KToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25UcmFuc2xh
dGVPbk1haW5UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVz
dEFuaW1hdGlvblRyYW5zbGF0ZU9uTWFpblRocmVhZDo6cnVuTXlUZXN0KToKKworMjAxMi0wMy0x
NiAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbY2hyb21p
dW1dIFRyYW5zZm9ybSBhbmltYXRpb24gc3RhdGUgc2hvdWxkIGJlIGluaGVyaXRlZCBmcm9tIHBh
cmVudHMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTgx
MzYzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCmluZGV4IGUwYTNlNGY4
ZWFlMGU5YzA5ZmViMWRhZGJhOWVhNDgyODNlNTA5NjguLjc2ZjBkYjQ1MGIyOTkzYWYyNGQ4MDAx
MThiYjg1NTkxMmIwN2RlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNw
cApAQCAtODMsNiArODMsMjAgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlw
ZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjplbnRlclRhcmdldFJlbmRlclN1cmYKICAgICB9CiB9CiAK
K3N0YXRpYyBpbmxpbmUgYm9vbCBsYXllck9wYWNpdHlLbm93bihjb25zdCBMYXllckNocm9taXVt
KiBsYXllcikgeyByZXR1cm4gIWxheWVyLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCk7IH0KK3N0
YXRpYyBpbmxpbmUgYm9vbCBsYXllck9wYWNpdHlLbm93bihjb25zdCBDQ0xheWVySW1wbCopIHsg
cmV0dXJuIHRydWU7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBsYXllclRyYW5zZm9ybXNUb1Rhcmdl
dEtub3duKGNvbnN0IExheWVyQ2hyb21pdW0qIGxheWVyKSB7IHJldHVybiAhbGF5ZXItPmRyYXdU
cmFuc2Zvcm1zQW5pbWF0aW5nSW5UYXJnZXQoKTsgfQorc3RhdGljIGlubGluZSBib29sIGxheWVy
VHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24oY29uc3QgQ0NMYXllckltcGwqKSB7IHJldHVybiB0cnVl
OyB9CitzdGF0aWMgaW5saW5lIGJvb2wgbGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihjb25z
dCBMYXllckNocm9taXVtKiBsYXllcikgeyByZXR1cm4gIWxheWVyLT5kcmF3VHJhbnNmb3Jtc0Fu
aW1hdGluZ0luU2NyZWVuKCk7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBsYXllclRyYW5zZm9ybXNU
b1NjcmVlbktub3duKGNvbnN0IENDTGF5ZXJJbXBsKiBsYXllcikgeyByZXR1cm4gdHJ1ZTsgfQor
CitzdGF0aWMgaW5saW5lIGJvb2wgc3VyZmFjZU9wYWNpdHlLbm93bihjb25zdCBSZW5kZXJTdXJm
YWNlQ2hyb21pdW0qIHN1cmZhY2UpIHsgcmV0dXJuICFzdXJmYWNlLT5kcmF3T3BhY2l0eUlzQW5p
bWF0aW5nKCk7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBzdXJmYWNlT3BhY2l0eUtub3duKGNvbnN0
IENDUmVuZGVyU3VyZmFjZSopIHsgcmV0dXJuIHRydWU7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBz
dXJmYWNlVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24oY29uc3QgUmVuZGVyU3VyZmFjZUNocm9taXVt
KiBzdXJmYWNlKSB7IHJldHVybiAhc3VyZmFjZS0+ZHJhd1RyYW5zZm9ybXNBbmltYXRpbmdJblRh
cmdldCgpOyB9CitzdGF0aWMgaW5saW5lIGJvb2wgc3VyZmFjZVRyYW5zZm9ybXNUb1RhcmdldEtu
b3duKGNvbnN0IENDUmVuZGVyU3VyZmFjZSopIHsgcmV0dXJuIHRydWU7IH0KK3N0YXRpYyBpbmxp
bmUgYm9vbCBzdXJmYWNlVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24oY29uc3QgUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiBzdXJmYWNlKSB7IHJldHVybiAhc3VyZmFjZS0+ZHJhd1RyYW5zZm9ybXNBbmlt
YXRpbmdJblNjcmVlbigpOyB9CitzdGF0aWMgaW5saW5lIGJvb2wgc3VyZmFjZVRyYW5zZm9ybXNU
b1NjcmVlbktub3duKGNvbnN0IENDUmVuZGVyU3VyZmFjZSogc3VyZmFjZSkgeyByZXR1cm4gdHJ1
ZTsgfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZh
Y2VUeXBlPgogdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3Vy
ZmFjZVR5cGU+OjpmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgTGF5ZXJUeXBlKiBv
d25pbmdMYXllciwgY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIGZpbmlzaGVkVGFyZ2V0KQogewpA
QCAtOTIsOSArMTA2LDE1IEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUs
IFJlbmRlclN1cmZhY2VUeXBlPjo6ZmluaXNoZWRUYXJnZXRSZW5kZXJTCiAgICAgLy8gTWFrZSBz
dXJlIHdlIGtub3cgYWJvdXQgdGhlIHRhcmdldCBzdXJmYWNlLgogICAgIGVudGVyVGFyZ2V0UmVu
ZGVyU3VyZmFjZShmaW5pc2hlZFRhcmdldCk7CiAKLSAgICBpZiAob3duaW5nTGF5ZXItPm1hc2tM
YXllcigpIHx8IGZpbmlzaGVkVGFyZ2V0LT5kcmF3T3BhY2l0eSgpIDwgMSB8fCBmaW5pc2hlZFRh
cmdldC0+ZmlsdGVycygpLmhhc0ZpbHRlclRoYXRBZmZlY3RzT3BhY2l0eSgpKSB7CisgICAgLy8g
SWYgdGhlIG9jY2x1c2lvbiB3aXRoaW4gdGhlIHN1cmZhY2UgY2FuIG5vdCBiZSBhcHBsaWVkIHRv
IHRoaW5ncyBvdXRzaWRlIG9mIHRoZSBzdXJmYWNlJ3Mgc3VidHJlZSwgdGhlbiBjbGVhciB0aGUg
b2NjbHVzaW9uIGhlcmUgc28gaXQgd29uJ3QgYmUgdXNlZC4KKyAgICBpZiAob3duaW5nTGF5ZXIt
Pm1hc2tMYXllcigpIHx8ICFzdXJmYWNlT3BhY2l0eUtub3duKGZpbmlzaGVkVGFyZ2V0KSB8fCBm
aW5pc2hlZFRhcmdldC0+ZHJhd09wYWNpdHkoKSA8IDEgfHwgZmluaXNoZWRUYXJnZXQtPmZpbHRl
cnMoKS5oYXNGaWx0ZXJUaGF0QWZmZWN0c09wYWNpdHkoKSkgewogICAgICAgICBtX3N0YWNrLmxh
c3QoKS5vY2NsdXNpb25JblNjcmVlbiA9IFJlZ2lvbigpOwogICAgICAgICBtX3N0YWNrLmxhc3Qo
KS5vY2NsdXNpb25JblRhcmdldCA9IFJlZ2lvbigpOworICAgIH0gZWxzZSB7CisgICAgICAgIGlm
ICghc3VyZmFjZVRyYW5zZm9ybXNUb1RhcmdldEtub3duKGZpbmlzaGVkVGFyZ2V0KSkKKyAgICAg
ICAgICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0ID0gUmVnaW9uKCk7CisgICAg
ICAgIGlmICghc3VyZmFjZVRyYW5zZm9ybXNUb1NjcmVlbktub3duKGZpbmlzaGVkVGFyZ2V0KSkK
KyAgICAgICAgICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuID0gUmVnaW9uKCk7
CiAgICAgfQogfQogCkBAIC0xNTEsNiArMTcxLDcgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJC
YXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpsZWF2ZVRvVGFyZ2V0UmVuZGVyU3UK
IHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KIHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRp
b25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgTGF5ZXJUeXBlKiBs
YXllcikKIHsKKyAgICBBU1NFUlQobGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihsYXllcikp
OwogICAgIEludFNpemUgYm91bmRzSW5MYXllclNwYWNlID0gbGF5ZXItPmJvdW5kcygpOwogICAg
IEludFNpemUgYm91bmRzSW5Db250ZW50U3BhY2UgPSBsYXllci0+Y29udGVudEJvdW5kcygpOwog
CkBAIC0xNjksNiArMTkwLDcgQEAgc3RhdGljIGlubGluZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBj
b250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybShjb25zdCBMYXllclR5cGUKIHRlbXBsYXRlPHR5
cGVuYW1lIExheWVyVHlwZT4KIHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRpb25NYXRyaXggY29u
dGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybShjb25zdCBMYXllclR5cGUqIGxheWVyKQogewor
ICAgIEFTU0VSVChsYXllclRyYW5zZm9ybXNUb1RhcmdldEtub3duKGxheWVyKSk7CiAgICAgSW50
U2l6ZSBib3VuZHNJbkxheWVyU3BhY2UgPSBsYXllci0+Ym91bmRzKCk7CiAgICAgSW50U2l6ZSBi
b3VuZHNJbkNvbnRlbnRTcGFjZSA9IGxheWVyLT5jb250ZW50Qm91bmRzKCk7CiAKQEAgLTIxOSwx
NSArMjQxLDE0IEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlPjo6bWFya09jY2x1ZGVkQmVoaW5kTGF5CiAgICAgaWYgKG1fc3RhY2suaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobGF5ZXItPmRyYXdPcGFjaXR5KCkg
IT0gMSkKKyAgICBpZiAoIWxheWVyT3BhY2l0eUtub3duKGxheWVyKSB8fCBsYXllci0+ZHJhd09w
YWNpdHkoKSA8IDEpCiAgICAgICAgIHJldHVybjsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGNvbnRlbnRUb1NjcmVlblNwYWNlID0gY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5
ZXJUeXBlPihsYXllcik7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvVGFyZ2V0
U3VyZmFjZSA9IGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXll
cik7Ci0KICAgICAvLyBGSVhNRTogUmVtb3ZlIG1fdXNlUGFpbnRUcmFja2luZyB3aGVuIHBhaW50
IHRyYWNraW5nIGlzIG9uIGZvciBwYWludCBjdWxsaW5nLgotICAgIG1fc3RhY2subGFzdCgpLm9j
Y2x1c2lvbkluU2NyZWVuLnVuaXRlKGNvbXB1dGVPY2NsdXNpb25CZWhpbmRMYXllcjxMYXllclR5
cGU+KGxheWVyLCBjb250ZW50VG9TY3JlZW5TcGFjZSwgbV91c2VQYWludFRyYWNraW5nKSk7Ci0g
ICAgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQudW5pdGUoY29tcHV0ZU9jY2x1c2lv
bkJlaGluZExheWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1RhcmdldFN1cmZhY2UsIG1f
dXNlUGFpbnRUcmFja2luZykpOworICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3du
KGxheWVyKSkKKyAgICAgICAgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4udW5pdGUo
Y29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1Nj
cmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBtX3VzZVBhaW50VHJhY2tpbmcp
KTsKKyAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihsYXllcikpCisgICAgICAg
IG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0LnVuaXRlKGNvbXB1dGVPY2NsdXNpb25C
ZWhpbmRMYXllcjxMYXllclR5cGU+KGxheWVyLCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNm
b3JtPExheWVyVHlwZT4obGF5ZXIpLCBtX3VzZVBhaW50VHJhY2tpbmcpKTsKIH0KIAogc3RhdGlj
IGlubGluZSBib29sIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNvbnN0IEludFJlY3QmIGNvbnRl
bnRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgY29udGVudFNwYWNlVHJhbnNmb3Jt
LCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgY29uc3QgUmVnaW9uJiBvY2NsdXNpb24pCkBA
IC0yNDksOSArMjcwLDkgQEAgYm9vbCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGU+OjpvY2NsdWRlZChjb25zdCBMYXllclQKIAogICAgIEFTU0VSVChs
YXllci0+dGFyZ2V0UmVuZGVyU3VyZmFjZSgpID09IG1fc3RhY2subGFzdCgpLnN1cmZhY2UpOwog
Ci0gICAgaWYgKHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNvbnRlbnRSZWN0LCBjb250ZW50VG9T
Y3JlZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwgbV9zY2lzc29yUmVjdEluU2Ny
ZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuKSkKKyAgICBpZiAobGF5
ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihsYXllcikgJiYgdGVzdENvbnRlbnRSZWN0T2NjbHVk
ZWQoY29udGVudFJlY3QsIGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlwZT4o
bGF5ZXIpLCBtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgbV9zdGFjay5sYXN0KCkub2NjbHVz
aW9uSW5TY3JlZW4pKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAodGVzdENvbnRlbnRS
ZWN0T2NjbHVkZWQoY29udGVudFJlY3QsIGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08
TGF5ZXJUeXBlPihsYXllciksIGxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIp
LCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCkpCisgICAgaWYgKGxheWVyVHJhbnNm
b3Jtc1RvVGFyZ2V0S25vd24obGF5ZXIpICYmIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNvbnRl
bnRSZWN0LCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIp
LCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVyKSwgbV9zdGFjay5sYXN0KCku
b2NjbHVzaW9uSW5UYXJnZXQpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CkBAIC0zMTcsMTMgKzMzOCwxNiBAQCBJbnRSZWN0IENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OnVub2NjbHVkZWRDb250ZW50UgogICAg
IC8vIFdlIHdhbnQgdG8gcmV0dXJuIGEgcmVjdCB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgdmlzaWJs
ZSBwYXJ0cyBvZiB8Y29udGVudFJlY3R8IGluIGJvdGggc2NyZWVuIHNwYWNlIGFuZCBpbiB0aGUg
dGFyZ2V0IHN1cmZhY2UuCiAgICAgLy8gU28gd2UgZmluZCB0aGUgdmlzaWJsZSBwYXJ0cyBvZiB8
Y29udGVudFJlY3R8IGluIGVhY2ggc3BhY2UsIGFuZCB0YWtlIHRoZSBpbnRlcnNlY3Rpb24uCiAK
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9TY3JlZW5TcGFjZSA9IGNvbnRlbnRU
b1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpOwotICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGNvbnRlbnRUb1RhcmdldFN1cmZhY2UgPSBjb250ZW50VG9UYXJnZXRTdXJmYWNl
VHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpOworICAgIEludFJlY3QgdW5vY2NsdWRlZEluU2Ny
ZWVuID0gY29udGVudFJlY3Q7CisgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24o
bGF5ZXIpKQorICAgICAgICB1bm9jY2x1ZGVkSW5TY3JlZW4gPSBjb21wdXRlVW5vY2NsdWRlZENv
bnRlbnRSZWN0KGNvbnRlbnRSZWN0LCBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybTxMYXll
clR5cGU+KGxheWVyKSwgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIG1fc3RhY2subGFzdCgp
Lm9jY2x1c2lvbkluU2NyZWVuKTsKIAotICAgIEludFJlY3QgdW5vY2NsdWRlZEluU2NyZWVuID0g
Y29tcHV0ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb250ZW50UmVjdCwgY29udGVudFRvU2NyZWVu
U3BhY2UsIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNp
b25JblNjcmVlbik7CiAgICAgaWYgKHVub2NjbHVkZWRJblNjcmVlbi5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybiBJbnRSZWN0KCk7Ci0gICAgSW50UmVjdCB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBj
b21wdXRlVW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0LCBjb250ZW50VG9UYXJnZXRT
dXJmYWNlLCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVyKSwgbV9zdGFjay5s
YXN0KCkub2NjbHVzaW9uSW5UYXJnZXQpOworICAgICAgICByZXR1cm4gdW5vY2NsdWRlZEluU2Ny
ZWVuOworCisgICAgSW50UmVjdCB1bm9jY2x1ZGVkSW5UYXJnZXQgPSBjb250ZW50UmVjdDsKKyAg
ICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihsYXllcikpCisgICAgICAgIHVub2Nj
bHVkZWRJblRhcmdldCA9IGNvbXB1dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3Qs
IGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIGxheWVy
U2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIpLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNp
b25JblRhcmdldCk7CiAKICAgICByZXR1cm4gaW50ZXJzZWN0aW9uKHVub2NjbHVkZWRJblNjcmVl
biwgdW5vY2NsdWRlZEluVGFyZ2V0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCmluZGV4IGRlY2E0YWNlZmJl
NjY5MTBjYTUxY2I1ZTYxZDM0ZWI4NzQxYWU4MjkuLmVjYWQyZjliOGM0NzdmNGUyZTJhODM5MjQ1
MzI5MTdkZjYyZDU3NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcApAQCAtMzAsNiArMzAsOCBAQAogI2luY2x1
ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJSZWdpb24uaCIKICNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgorI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bi5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24u
aCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCkBAIC0xNzk0LDQgKzE3OTYs
MjA2IEBAIHByb3RlY3RlZDoKIAogTUFJTl9USFJFQURfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0UGVyc3BlY3RpdmVUcmFuc2Zvcm1CZWhpbmRDYW1lcmEpOwogCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYXllclR5cGU+CitzdGF0aWMgaW50IGFkZE9wYWNpdHlBbmltYXRpb25Ub0xheWVyKExheWVy
VHlwZSogbGF5ZXIsIGZsb2F0IHN0YXJ0VmFsdWUsIGZsb2F0IGVuZFZhbHVlLCBkb3VibGUgZHVy
YXRpb24pCit7CisgICAgc3RhdGljIGludCBpZCA9IDA7CisgICAgV2ViQ29yZTo6S2V5ZnJhbWVW
YWx1ZUxpc3QgdmFsdWVzKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsKKyAgICB2YWx1ZXMuaW5z
ZXJ0KG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKDAsIHN0YXJ0VmFsdWUpKTsKKyAgICB2YWx1ZXMu
aW5zZXJ0KG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKGR1cmF0aW9uLCBlbmRWYWx1ZSkpOworCisg
ICAgUmVmUHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVhdGUoKTsKKyAg
ICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKworICAgIEludFNpemUgYm94U2l6
ZTsKKyAgICBsYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmFkZEFuaW1hdGlvbih2
YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlvbi5nZXQoKSwgaWQsIDAsIDApOworICAgIHJldHVybiBp
ZCsrOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CitzdGF0aWMgaW50IGFkZFRy
YW5zZm9ybUFuaW1hdGlvblRvTGF5ZXIoTGF5ZXJUeXBlKiBsYXllciwgZG91YmxlIGR1cmF0aW9u
KQoreworICAgIHN0YXRpYyBpbnQgaWQgPSAwOworICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVM
aXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKKworICAgIFRyYW5z
Zm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczE7CisgICAgb3BlcmF0aW9uczEub3BlcmF0aW9ucygp
LmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMiwgRml4
ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7
CisgICAgdmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJm9wZXJh
dGlvbnMxKSk7CisKKyAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246
OmNyZWF0ZSgpOworICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24pOworCisgICAg
SW50U2l6ZSBib3hTaXplOworICAgIGxheWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+
YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0aW9uLmdldCgpLCBpZCwgMCwgMCk7
CisgICAgcmV0dXJuIGlkKys7Cit9CisKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1
ZUxheWVycz4KK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5MU9u
TWFpblRocmVhZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVM
YXllcnM+IHsKK3Byb3RlY3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAg
ICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRl
Um9vdCh0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAs
IDMwMCkpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIg
PSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICB0eXBl
bmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogc3VyZmFjZSA9IHRoaXMtPmNyZWF0ZURyYXdp
bmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclR5cGUqIHN1cmZhY2VDaGlsZCA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihzdXJm
YWNlLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAs
IDMwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSog
c3VyZmFjZUNoaWxkMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihzdXJmYWNlLCB0aGlzLT5p
ZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDMwMCksIHRydWUp
OworCisgICAgICAgIGFkZE9wYWNpdHlBbmltYXRpb25Ub0xheWVyKGxheWVyLCAwLCAxLCAxMCk7
CisgICAgICAgIGFkZE9wYWNpdHlBbmltYXRpb25Ub0xheWVyKHN1cmZhY2UsIDAsIDEsIDEwKTsK
KyAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKKworICAgICAgICBFWFBFQ1RfVFJV
RShsYXllci0+ZHJhd09wYWNpdHlJc0FuaW1hdGluZygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNF
KHN1cmZhY2UtPmRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHlJc0FuaW1hdGluZygpKTsKKwor
ICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJU
eXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5k
ZXJTdXJmYWNlKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlQ2hpbGQyKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgxMDAsIDAsIDIwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBvY2Ns
dXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxkKTsKKyAgICAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgyMDAsIDAsIDEwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVk
ZWRDb250ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAg
ICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZSk7CisgICAgICAgIEVY
UEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMCwgMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgb2Nj
bHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLCBzdXJmYWNlLT5yZW5k
ZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZh
Y2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICAvLyBPY2NsdXNpb24gaXMgbG9z
dCB3aGVuIGxlYXZpbmcgdGhlIGFuaW1hdGluZyBzdXJmYWNlLgorICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisKKyAgICAgICAgb2NjbHVz
aW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgLy8gT2NjbHVzaW9u
IGlzIG5vdCBhZGRlZCBmb3IgdGhlIGFuaW1hdGluZyBsYXllci4KKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgwLCAwLCAzMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVu
dFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgIH0KK307CisKK01B
SU5fVEhSRUFEX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkxT25N
YWluVGhyZWFkKTsKKwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgor
Y2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWluVGhyZWFk
IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4gewor
cHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMt
PmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7Cisg
ICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNy
ZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVz
OjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2Uo
cGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgz
MDAsIDMwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogc3VyZmFjZUNoaWxkID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHN1cmZhY2UsIHRoaXMt
PmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMzAwKSwgdHJ1
ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlQ2hp
bGQyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHN1cmZhY2UsIHRoaXMtPmlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMzAwKSwgdHJ1ZSk7CisKKyAgICAg
ICAgYWRkT3BhY2l0eUFuaW1hdGlvblRvTGF5ZXIobGF5ZXIsIDEsIDAsIDEwKTsKKyAgICAgICAg
YWRkT3BhY2l0eUFuaW1hdGlvblRvTGF5ZXIoc3VyZmFjZSwgMSwgMCwgMTApOworICAgICAgICB0
aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOworCisgICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5k
cmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3VyZmFjZS0+
ZHJhd09wYWNpdHlJc0FuaW1hdGluZygpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3VyZmFjZS0+
cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOworCisgICAgICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVu
YW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uo
c3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZDIpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDEwMCwgMCwgMjAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1
cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlQ2hpbGQpOworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDIwMCwgMCwgMTAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsKKyAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChz
dXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBvY2NsdXNpb24uZmlu
aXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UsIHN1cmZhY2UtPnJlbmRlclN1cmZhY2Uo
KSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIC8vIE9jY2x1c2lvbiBpcyBsb3N0IHdoZW4gbGVh
dmluZyB0aGUgYW5pbWF0aW5nIHN1cmZhY2UuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVu
dCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICAvLyBPY2NsdXNpb24gaXMgbm90IGFk
ZGVkIGZvciB0aGUgYW5pbWF0aW5nIGxheWVyLgorICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRS
ZWN0KDAsIDAsIDMwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJl
bnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgfQorfTsKKworTUFJTl9USFJFQURf
VEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTBPbk1haW5UaHJlYWQp
OworCit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFzcyBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uVHJhbnNsYXRlT25NYWluVGhyZWFkIDogcHVibGlj
IENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVycz4geworcHJvdGVjdGVk
OgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpD
b250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CisgICAgICAgIHR5
cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdp
bmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJ
bnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50
TGF5ZXJUeXBlKiBzdXJmYWNlID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZhY2UocGFyZW50LCB0
aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCks
IHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogc3VyZmFj
ZUNoaWxkID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHN1cmZhY2UsIHRoaXMtPmlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMzAwKSwgdHJ1ZSk7CisgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlQ2hpbGQyID0gdGhp
cy0+Y3JlYXRlRHJhd2luZ0xheWVyKHN1cmZhY2UsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdT
dXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIElu
dFNpemUoNTAsIDMwMCksIHRydWUpOworCisgICAgICAgIGFkZFRyYW5zZm9ybUFuaW1hdGlvblRv
TGF5ZXIobGF5ZXIsIDEwKTsKKyAgICAgICAgYWRkVHJhbnNmb3JtQW5pbWF0aW9uVG9MYXllcihz
dXJmYWNlLCAxMCk7CisgICAgICAgIGFkZFRyYW5zZm9ybUFuaW1hdGlvblRvTGF5ZXIoc3VyZmFj
ZUNoaWxkLCAxMCk7CisgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisKKyAgICAg
ICAgRVhQRUNUX1RSVUUobGF5ZXItPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5UYXJnZXQoKSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKGxheWVyLT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGluZ0luU2Ny
ZWVuKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCktPmRy
YXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5UYXJnZXQoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1
cmZhY2UtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd1RyYW5zZm9ybXNBbmltYXRpbmdJblNjcmVlbigp
KTsKKyAgICAgICAgLy8gVGhlIHN1cmZhY2Ugb3duaW5nIGxheWVyIGRvZXNuJ3QgYW5pbWF0ZSBh
Z2FpbnN0IGl0cyBvd24gc3VyZmFjZS4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN1cmZhY2UtPmRy
YXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5UYXJnZXQoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1
cmZhY2UtPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5TY3JlZW4oKSk7CisgICAgICAgIEVYUEVD
VF9UUlVFKHN1cmZhY2VDaGlsZC0+ZHJhd1RyYW5zZm9ybXNBbmltYXRpbmdJblRhcmdldCgpKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoc3VyZmFjZUNoaWxkLT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGlu
Z0luU2NyZWVuKCkpOworCisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVu
YW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4g
b2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZTItPnJlbmRlclN1cmZhY2UoKSk7Cisg
ICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlMik7CisgICAg
ICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZTIsIHN1cmZh
Y2UyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJl
bmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMCwgMCwgNTAsIDMwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOworCisgICAgICAgIG9jY2x1c2lv
bi5lbnRlclRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKKwor
ICAgICAgICAvLyBUaGUgbGF5ZXIgaXMgbW92aW5nIGluIHNjcmVlbiBzcGFjZSBidXQgbm90IHJl
bGF0aXZlIHRvIGl0cyB0YXJnZXQsIHNvIG9jY2x1c2lvbiBzaG91bGQgaGFwcGVuIGluIGl0cyB0
YXJnZXQgc3BhY2Ugb25seS4KKyAgICAgICAgLy8gSXQgYWxzbyBtZWFucyB0aGF0IHRoaW5ncyBv
Y2NsdWRpbmcgaW4gc2NyZWVuIHNwYWNlIChlLmcuIHN1cmZhY2UyKSBjYW5ub3Qgb2NjbHVkZSB0
aGlzIGxheWVyLgorICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwgMzAw
KSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNlQ2hpbGQyLCBJbnRSZWN0
KDAsIDAsIDEwMCwgMzAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1
ZGVkKHN1cmZhY2VDaGlsZCwgSW50UmVjdCgwLCAwLCA1MCwgMzAwKSkpOworCisgICAgICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlQ2hpbGQyKTsKKyAgICAgICAg
RVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChzdXJmYWNlQ2hpbGQsIEludFJlY3QoMCwg
MCwgMTAwLCAzMDApKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNTAs
IDMwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVj
dHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwg
MzAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAg
ICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCku
cmVjdHMoKS5zaXplKCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMCwg
MjAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2UsIEludFJl
Y3QoMCwgMCwgMzAwLCAzMDApKSk7CisKKyAgICAgICAgLy8gVGhlIHN1cmZhY2UgY2hpbGQgaXMg
b2NjbHVkZWQgYnkgdGhlIHN1cmZhY2VDaGlsZDIsIGJ1dCBpcyBtb3ZpbmcgcmVsYXRpdmUgaXRz
IHRhcmdldCBhbmQgdGhlIHNjcmVlbiwgc28gaXQKKyAgICAgICAgLy8gY2FuJ3QgYmUgb2NjbHVk
ZWQuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMjAwLCAzMDApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2VDaGlsZCwgSW50UmVjdCgwLCAwLCAy
MDAsIDMwMCkpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChzdXJm
YWNlQ2hpbGQsIEludFJlY3QoMCwgMCwgNTAsIDMwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxkKTsKKyAgICAgICAgLy8gVGhlIGxh
eWVyIGlzIG1vdmluZyBpbiBzY3JlZW4gc3BhY2UgYnV0IG5vdCByZWxhdGl2ZSB0byBpdHMgdGFy
Z2V0LCBzbyBvY2NsdXNpb24gc2hvdWxkIGhhcHBlbiBpbiBpdHMgdGFyZ2V0IHNwYWNlIG9ubHku
CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNTAsIDMwMCksIG9jY2x1c2lv
bi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEo
MXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkpOwor
ICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDEwMCwgMzAwKSwgb2NjbHVzaW9u
Lm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VR
KDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXplKCkp
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDEwMCwgMCwgMjAwLCAzMDApLCBvY2Ns
dXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAz
MDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZh
Y2UpOworICAgICAgICAvLyBUaGUgbGF5ZXIgaXMgbW92aW5nIGluIHNjcmVlbiBzcGFjZSBidXQg
bm90IHJlbGF0aXZlIHRvIGl0cyB0YXJnZXQsIHNvIG9jY2x1c2lvbiBzaG91bGQgaGFwcGVuIGlu
IGl0cyB0YXJnZXQgc3BhY2Ugb25seS4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCA1MCwgMzAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMo
KSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwg
MCwgMzAwLCAzMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRz
KCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MCwgMCwgMCwgMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50
UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24uZmluaXNoZWRUYXJn
ZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UsIHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7CisgICAg
ICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShwYXJlbnQtPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgICAgIC8vIFRoZSBzdXJmYWNlIGlzIG1vdmluZyBpbiB0aGUgc2NyZWVu
IGFuZCBpbiBpdHMgdGFyZ2V0LCBzbyBhbGwgb2NjbHVzaW9uIGlzIGxvc3Qgd2hlbiBsZWF2aW5n
IGl0LgorICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDUwLCAwLCAyNTAsIDMwMCksIG9j
Y2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwg
MzAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXll
cik7CisgICAgICAgIC8vIFRoZSBsYXllciBpcyBhbmltYXRpbmcgaW4gdGhlIHNjcmVlbiBhbmQg
aW4gaXRzIHRhcmdldCwgc28gbm8gb2NjbHVzaW9uIGlzIGFkZGVkLgorICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDUwLCAwLCAyNTAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3QocGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgIH0KK307CisK
K01BSU5fVEhSRUFEX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvblRyYW5zbGF0
ZU9uTWFpblRocmVhZCk7CisKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132507</attachid>
            <date>2012-03-18 16:40:57 -0700</date>
            <delta_ts>2012-03-18 16:55:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81354-20120318194055.patch</filename>
            <type>text/plain</type>
            <size>24540</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRhYjA0ZTBkOWJhMjM2
YTgwZGRlOWVkMzdmNzYzZmYxNWQ3MzJlNy4uZDQ2ZjdmNGE1MDVhZGE3N2E3M2FlYzc3ODc4MzZj
ODNlZDI1YzgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAzLTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRG9u
J3Qgb2NjbHVkZSBvbiBtYWluLXRocmVhZCBiZWhpbmQgbGF5ZXJzL3N1cmZhY2VzIHdpdGggaW1w
bC10aHJlYWQgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODEzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBXYWxrZXIu
CisKKyAgICAgICAgTGF5ZXJzIGFuZCBzdXJmYWNlcyBjYW4gaGF2ZSBhbiBhbmltYXRpbmcgb3Bh
Y2l0eSBvciB0cmFuc2xhdGlvbiBvbiB0aGUKKyAgICAgICAgaW1wbCB0aHJlYWQuIEluIHRoaXMg
Y2FzZSwgdGhlIG1haW4gdGhyZWFkIGRvZXMgbm90IGtub3cgdGhlaXIgYWN0dWFsCisgICAgICAg
IHZhbHVlcywgYW5kIHRyZWF0cyB0aGVzZSB2YWx1ZXMgYXMgInVua25vd25zIi4gVGhpcyBtZWFu
cyB3ZSBjYW4ndCB1c2UKKyAgICAgICAgdGhlbSBmb3IgbWFya2luZyBhcmVhcyBvZiB0aGUgc2Ny
ZWVuIGFzIG9jY2x1ZGVkLCBhbmQgd2UgY2FuJ3QgY29uc2lkZXIKKyAgICAgICAgYSBwYXJ0IG9m
IGEgbGF5ZXIgb2NjbHVkZWQgaW4gYSBzcGFjZSB0aGF0IHdlIGNhbiBub3QgcmVsaWFibHkgdHJh
bnNmb3JtCisgICAgICAgIHRvLgorCisgICAgICAgIFVuaXQgdGVzdDogQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWluVGhyZWFkCisgICAgICAgICAgICAgICAgICAg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkxT25NYWluVGhyZWFkCisgICAg
ICAgICAgICAgICAgICAgQ0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvblRyYW5zbGF0ZU9u
TWFpblRocmVhZAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NP
Y2NsdXNpb25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyT3BhY2l0eUtub3du
KToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24pOgorICAg
ICAgICAoV2ViQ29yZTo6bGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bik6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnN1cmZhY2VPcGFjaXR5VW5rbm93bik6CisgICAg
ICAgIChXZWJDb3JlOjpzdXJmYWNlVHJhbnNmb3Jtc1RvVGFyZ2V0VW5rbm93bik6CisgICAgICAg
IChXZWJDb3JlOjpzdXJmYWNlVHJhbnNmb3Jtc1RvU2NyZWVuVW5rbm93bik6CisgICAgICAgIChX
ZWJDb3JlOjo6OmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpjb250
ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6OjpvY2NsdWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjo6OnVub2NjbHVkZWRDb250ZW50UmVjdCk6CisKIDIwMTItMDMtMTggIERh
dmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnZhbGlkYXRp
b24gaXNzdWUgd2hlbiBjcmVhdGluZyBiYWNraW5nIGxheWVyIGZvciBmaXhlZCBwb3NpdGlvbmVk
IGVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhiYWIwZmRkYjQ0MTgyMTFj
NzkwYWEyMDhjMDMzZTgwMTBhMmM0NWYuLjljYzMwN2RjZmJiODgwNTU0NTU0MWY3MWNiZjcyOTkz
YTE3MzYzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTItMDMtMTYgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBEb24ndCBvY2NsdWRlIG9uIG1haW4tdGhyZWFkIGJlaGluZCBsYXllcnMvc3Vy
ZmFjZXMgd2l0aCBpbXBsLXRocmVhZCBhbmltYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTM1NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFk
cmllbm5lIFdhbGtlci4KKworICAgICAgICAqIHRlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRPcGFjaXR5QW5p
bWF0aW9uVG9MYXllcik6CisgICAgICAgIChXZWJDb3JlOjphZGRUcmFuc2Zvcm1BbmltYXRpb25U
b0xheWVyKToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5
MU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5UaHJlYWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTBPbk1haW5UaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWlu
VGhyZWFkOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1h
dGlvblRyYW5zbGF0ZU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lv
blRyYWNrZXJUZXN0QW5pbWF0aW9uVHJhbnNsYXRlT25NYWluVGhyZWFkOjpydW5NeVRlc3QpOgor
CiAyMDEyLTAzLTE4ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gVHJhbnNmb3JtIGFuaW1hdGlvbiBzdGF0ZSBzaG91bGQgYmUgaW5oZXJp
dGVkIGZyb20gcGFyZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKaW5k
ZXggYzY5YTRkOWM4MWQyMTQ4YWUwYWM3ZDc4OTkwNjEyYThmZWJmOTViMi4uZGZjNmFkOGE5OWFj
NmE1NzhlYTI3NmE3M2IxNmJmYjZjN2Q3ZmI2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lv
blRyYWNrZXIuY3BwCkBAIC03Myw2ICs3MywyMCBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmVudGVyVGFyZ2V0UmVuZGVyU3VyZgog
ICAgIH0KIH0KIAorc3RhdGljIGlubGluZSBib29sIGxheWVyT3BhY2l0eUtub3duKGNvbnN0IExh
eWVyQ2hyb21pdW0qIGxheWVyKSB7IHJldHVybiAhbGF5ZXItPmRyYXdPcGFjaXR5SXNBbmltYXRp
bmcoKTsgfQorc3RhdGljIGlubGluZSBib29sIGxheWVyT3BhY2l0eUtub3duKGNvbnN0IENDTGF5
ZXJJbXBsKikgeyByZXR1cm4gdHJ1ZTsgfQorc3RhdGljIGlubGluZSBib29sIGxheWVyVHJhbnNm
b3Jtc1RvVGFyZ2V0S25vd24oY29uc3QgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIHsgcmV0dXJuICFs
YXllci0+ZHJhd1RyYW5zZm9ybXNBbmltYXRpbmdJblRhcmdldCgpOyB9CitzdGF0aWMgaW5saW5l
IGJvb2wgbGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihjb25zdCBDQ0xheWVySW1wbCopIHsg
cmV0dXJuIHRydWU7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBsYXllclRyYW5zZm9ybXNUb1NjcmVl
bktub3duKGNvbnN0IExheWVyQ2hyb21pdW0qIGxheWVyKSB7IHJldHVybiAhbGF5ZXItPmRyYXdU
cmFuc2Zvcm1zQW5pbWF0aW5nSW5TY3JlZW4oKTsgfQorc3RhdGljIGlubGluZSBib29sIGxheWVy
VHJhbnNmb3Jtc1RvU2NyZWVuS25vd24oY29uc3QgQ0NMYXllckltcGwqKSB7IHJldHVybiB0cnVl
OyB9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzdXJmYWNlT3BhY2l0eUtub3duKGNvbnN0IFJlbmRl
clN1cmZhY2VDaHJvbWl1bSogc3VyZmFjZSkgeyByZXR1cm4gIXN1cmZhY2UtPmRyYXdPcGFjaXR5
SXNBbmltYXRpbmcoKTsgfQorc3RhdGljIGlubGluZSBib29sIHN1cmZhY2VPcGFjaXR5S25vd24o
Y29uc3QgQ0NSZW5kZXJTdXJmYWNlKikgeyByZXR1cm4gdHJ1ZTsgfQorc3RhdGljIGlubGluZSBi
b29sIHN1cmZhY2VUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihjb25zdCBSZW5kZXJTdXJmYWNlQ2hy
b21pdW0qIHN1cmZhY2UpIHsgcmV0dXJuICFzdXJmYWNlLT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGlu
Z0luVGFyZ2V0KCk7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBzdXJmYWNlVHJhbnNmb3Jtc1RvVGFy
Z2V0S25vd24oY29uc3QgQ0NSZW5kZXJTdXJmYWNlKikgeyByZXR1cm4gdHJ1ZTsgfQorc3RhdGlj
IGlubGluZSBib29sIHN1cmZhY2VUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihjb25zdCBSZW5kZXJT
dXJmYWNlQ2hyb21pdW0qIHN1cmZhY2UpIHsgcmV0dXJuICFzdXJmYWNlLT5kcmF3VHJhbnNmb3Jt
c0FuaW1hdGluZ0luU2NyZWVuKCk7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBzdXJmYWNlVHJhbnNm
b3Jtc1RvU2NyZWVuS25vd24oY29uc3QgQ0NSZW5kZXJTdXJmYWNlKikgeyByZXR1cm4gdHJ1ZTsg
fQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGUsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VU
eXBlPgogdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGU+OjpmaW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2UoY29uc3QgTGF5ZXJUeXBlKiBvd25p
bmdMYXllciwgY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIGZpbmlzaGVkVGFyZ2V0KQogewpAQCAt
ODIsOSArOTYsMTUgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVu
ZGVyU3VyZmFjZVR5cGU+OjpmaW5pc2hlZFRhcmdldFJlbmRlclMKICAgICAvLyBNYWtlIHN1cmUg
d2Uga25vdyBhYm91dCB0aGUgdGFyZ2V0IHN1cmZhY2UuCiAgICAgZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKGZpbmlzaGVkVGFyZ2V0KTsKIAotICAgIGlmIChvd25pbmdMYXllci0+bWFza0xheWVy
KCkgfHwgZmluaXNoZWRUYXJnZXQtPmRyYXdPcGFjaXR5KCkgPCAxIHx8IGZpbmlzaGVkVGFyZ2V0
LT5maWx0ZXJzKCkuaGFzRmlsdGVyVGhhdEFmZmVjdHNPcGFjaXR5KCkpIHsKKyAgICAvLyBJZiB0
aGUgb2NjbHVzaW9uIHdpdGhpbiB0aGUgc3VyZmFjZSBjYW4gbm90IGJlIGFwcGxpZWQgdG8gdGhp
bmdzIG91dHNpZGUgb2YgdGhlIHN1cmZhY2UncyBzdWJ0cmVlLCB0aGVuIGNsZWFyIHRoZSBvY2Ns
dXNpb24gaGVyZSBzbyBpdCB3b24ndCBiZSB1c2VkLgorICAgIGlmIChvd25pbmdMYXllci0+bWFz
a0xheWVyKCkgfHwgIXN1cmZhY2VPcGFjaXR5S25vd24oZmluaXNoZWRUYXJnZXQpIHx8IGZpbmlz
aGVkVGFyZ2V0LT5kcmF3T3BhY2l0eSgpIDwgMSB8fCBmaW5pc2hlZFRhcmdldC0+ZmlsdGVycygp
Lmhhc0ZpbHRlclRoYXRBZmZlY3RzT3BhY2l0eSgpKSB7CiAgICAgICAgIG1fc3RhY2subGFzdCgp
Lm9jY2x1c2lvbkluU2NyZWVuID0gUmVnaW9uKCk7CiAgICAgICAgIG1fc3RhY2subGFzdCgpLm9j
Y2x1c2lvbkluVGFyZ2V0ID0gUmVnaW9uKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFz
dXJmYWNlVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24oZmluaXNoZWRUYXJnZXQpKQorICAgICAgICAg
ICAgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQgPSBSZWdpb24oKTsKKyAgICAgICAg
aWYgKCFzdXJmYWNlVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24oZmluaXNoZWRUYXJnZXQpKQorICAg
ICAgICAgICAgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4gPSBSZWdpb24oKTsKICAg
ICB9CiB9CiAKQEAgLTE0MSw2ICsxNjEsNyBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8
TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmxlYXZlVG9UYXJnZXRSZW5kZXJTdQogdGVt
cGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgogc3RhdGljIGlubGluZSBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybShjb25zdCBMYXllclR5cGUqIGxheWVy
KQogeworICAgIEFTU0VSVChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVyKSk7CiAg
ICAgSW50U2l6ZSBib3VuZHNJbkxheWVyU3BhY2UgPSBsYXllci0+Ym91bmRzKCk7CiAgICAgSW50
U2l6ZSBib3VuZHNJbkNvbnRlbnRTcGFjZSA9IGxheWVyLT5jb250ZW50Qm91bmRzKCk7CiAKQEAg
LTE1OSw2ICsxODAsNyBAQCBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRl
bnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtKGNvbnN0IExheWVyVHlwZQogdGVtcGxhdGU8dHlwZW5h
bWUgTGF5ZXJUeXBlPgogc3RhdGljIGlubGluZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50
VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtKGNvbnN0IExheWVyVHlwZSogbGF5ZXIpCiB7CisgICAg
QVNTRVJUKGxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24obGF5ZXIpKTsKICAgICBJbnRTaXpl
IGJvdW5kc0luTGF5ZXJTcGFjZSA9IGxheWVyLT5ib3VuZHMoKTsKICAgICBJbnRTaXplIGJvdW5k
c0luQ29udGVudFNwYWNlID0gbGF5ZXItPmNvbnRlbnRCb3VuZHMoKTsKIApAQCAtMjA5LDE1ICsy
MzEsMTQgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3Vy
ZmFjZVR5cGU+OjptYXJrT2NjbHVkZWRCZWhpbmRMYXkKICAgICBpZiAobV9zdGFjay5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChsYXllci0+ZHJhd09wYWNpdHkoKSAhPSAx
KQorICAgIGlmICghbGF5ZXJPcGFjaXR5S25vd24obGF5ZXIpIHx8IGxheWVyLT5kcmF3T3BhY2l0
eSgpIDwgMSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY29u
dGVudFRvU2NyZWVuU3BhY2UgPSBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5
cGU+KGxheWVyKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9UYXJnZXRTdXJm
YWNlID0gY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKTsK
LQogICAgIC8vIEZJWE1FOiBSZW1vdmUgbV91c2VQYWludFRyYWNraW5nIHdoZW4gcGFpbnQgdHJh
Y2tpbmcgaXMgb24gZm9yIHBhaW50IGN1bGxpbmcuCi0gICAgbV9zdGFjay5sYXN0KCkub2NjbHVz
aW9uSW5TY3JlZW4udW5pdGUoY29tcHV0ZU9jY2x1c2lvbkJlaGluZExheWVyPExheWVyVHlwZT4o
bGF5ZXIsIGNvbnRlbnRUb1NjcmVlblNwYWNlLCBtX3VzZVBhaW50VHJhY2tpbmcpKTsKLSAgICBt
X3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldC51bml0ZShjb21wdXRlT2NjbHVzaW9uQmVo
aW5kTGF5ZXI8TGF5ZXJUeXBlPihsYXllciwgY29udGVudFRvVGFyZ2V0U3VyZmFjZSwgbV91c2VQ
YWludFRyYWNraW5nKSk7CisgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5
ZXIpKQorICAgICAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbi51bml0ZShjb21w
dXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihsYXllciwgY29udGVudFRvU2NyZWVu
U3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG1fdXNlUGFpbnRUcmFja2luZykpOwor
ICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1RhcmdldEtub3duKGxheWVyKSkKKyAgICAgICAgbV9z
dGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQudW5pdGUoY29tcHV0ZU9jY2x1c2lvbkJlaGlu
ZExheWVyPExheWVyVHlwZT4obGF5ZXIsIGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08
TGF5ZXJUeXBlPihsYXllciksIG1fdXNlUGFpbnRUcmFja2luZykpOwogfQogCiBzdGF0aWMgaW5s
aW5lIGJvb2wgdGVzdENvbnRlbnRSZWN0T2NjbHVkZWQoY29uc3QgSW50UmVjdCYgY29udGVudFJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb250ZW50U3BhY2VUcmFuc2Zvcm0sIGNv
bnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1c2lvbikKQEAgLTIz
OSw5ICsyNjAsOSBAQCBib29sIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZT46Om9jY2x1ZGVkKGNvbnN0IExheWVyVAogCiAgICAgQVNTRVJUKGxheWVy
LT50YXJnZXRSZW5kZXJTdXJmYWNlKCkgPT0gbV9zdGFjay5sYXN0KCkuc3VyZmFjZSk7CiAKLSAg
ICBpZiAodGVzdENvbnRlbnRSZWN0T2NjbHVkZWQoY29udGVudFJlY3QsIGNvbnRlbnRUb1NjcmVl
blNwYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBtX3NjaXNzb3JSZWN0SW5TY3JlZW5T
cGFjZSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5TY3JlZW4pKQorICAgIGlmIChsYXllclRy
YW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVyKSAmJiB0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChj
b250ZW50UmVjdCwgY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXll
ciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25J
blNjcmVlbikpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIGlmICh0ZXN0Q29udGVudFJlY3RP
Y2NsdWRlZChjb250ZW50UmVjdCwgY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybTxMYXll
clR5cGU+KGxheWVyKSwgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllciksIG1f
c3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0KSkKKyAgICBpZiAobGF5ZXJUcmFuc2Zvcm1z
VG9UYXJnZXRLbm93bihsYXllcikgJiYgdGVzdENvbnRlbnRSZWN0T2NjbHVkZWQoY29udGVudFJl
Y3QsIGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIGxh
eWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIpLCBtX3N0YWNrLmxhc3QoKS5vY2Ns
dXNpb25JblRhcmdldCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIHJldHVybiBmYWxzZTsK
IH0KQEAgLTMwNywxMyArMzI4LDE2IEBAIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5vY2NsdWRlZENvbnRlbnRSCiAgICAgLy8g
V2Ugd2FudCB0byByZXR1cm4gYSByZWN0IHRoYXQgY29udGFpbnMgYWxsIHRoZSB2aXNpYmxlIHBh
cnRzIG9mIHxjb250ZW50UmVjdHwgaW4gYm90aCBzY3JlZW4gc3BhY2UgYW5kIGluIHRoZSB0YXJn
ZXQgc3VyZmFjZS4KICAgICAvLyBTbyB3ZSBmaW5kIHRoZSB2aXNpYmxlIHBhcnRzIG9mIHxjb250
ZW50UmVjdHwgaW4gZWFjaCBzcGFjZSwgYW5kIHRha2UgdGhlIGludGVyc2VjdGlvbi4KIAotICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1NjcmVlblNwYWNlID0gY29udGVudFRvU2Ny
ZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllcik7Ci0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggY29udGVudFRvVGFyZ2V0U3VyZmFjZSA9IGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFu
c2Zvcm08TGF5ZXJUeXBlPihsYXllcik7CisgICAgSW50UmVjdCB1bm9jY2x1ZGVkSW5TY3JlZW4g
PSBjb250ZW50UmVjdDsKKyAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihsYXll
cikpCisgICAgICAgIHVub2NjbHVkZWRJblNjcmVlbiA9IGNvbXB1dGVVbm9jY2x1ZGVkQ29udGVu
dFJlY3QoY29udGVudFJlY3QsIGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlw
ZT4obGF5ZXIpLCBtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgbV9zdGFjay5sYXN0KCkub2Nj
bHVzaW9uSW5TY3JlZW4pOwogCi0gICAgSW50UmVjdCB1bm9jY2x1ZGVkSW5TY3JlZW4gPSBjb21w
dXRlVW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0LCBjb250ZW50VG9TY3JlZW5TcGFj
ZSwgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbklu
U2NyZWVuKTsKICAgICBpZiAodW5vY2NsdWRlZEluU2NyZWVuLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuIEludFJlY3QoKTsKLSAgICBJbnRSZWN0IHVub2NjbHVkZWRJblRhcmdldCA9IGNvbXB1
dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3QsIGNvbnRlbnRUb1RhcmdldFN1cmZh
Y2UsIGxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIpLCBtX3N0YWNrLmxhc3Qo
KS5vY2NsdXNpb25JblRhcmdldCk7CisgICAgICAgIHJldHVybiB1bm9jY2x1ZGVkSW5TY3JlZW47
CisKKyAgICBJbnRSZWN0IHVub2NjbHVkZWRJblRhcmdldCA9IGNvbnRlbnRSZWN0OworICAgIGlm
IChsYXllclRyYW5zZm9ybXNUb1RhcmdldEtub3duKGxheWVyKSkKKyAgICAgICAgdW5vY2NsdWRl
ZEluVGFyZ2V0ID0gY29tcHV0ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb250ZW50UmVjdCwgY29u
dGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwgbGF5ZXJTY2lz
c29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllciksIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbklu
VGFyZ2V0KTsKIAogICAgIHJldHVybiBpbnRlcnNlY3Rpb24odW5vY2NsdWRlZEluU2NyZWVuLCB1
bm9jY2x1ZGVkSW5UYXJnZXQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKaW5kZXggZjIyMDE1MjQzMGE3MTE5
Yjk5YTEwZjU2YTZhY2VhNGU1ODA0ODgyOC4uYTRjNjA5ZGZiN2E3NjMyNjhjOTA2YTY2NmIzY2Jj
MTllODk5ZDcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09j
Y2x1c2lvblRyYWNrZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCkBAIC0zMCw2ICszMCw4IEBACiAjaW5jbHVkZSAi
TGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRyYW5zZm9y
bWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgi
CisjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgog
I2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKQEAgLTE2NzQsNCArMTY3NiwyMDYg
QEAgcHJvdGVjdGVkOgogCiBNQUlOX1RIUkVBRF9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RQ
ZXJzcGVjdGl2ZVRyYW5zZm9ybUJlaGluZENhbWVyYSk7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZT4KK3N0YXRpYyBpbnQgYWRkT3BhY2l0eUFuaW1hdGlvblRvTGF5ZXIoTGF5ZXJUeXBl
KiBsYXllciwgZmxvYXQgc3RhcnRWYWx1ZSwgZmxvYXQgZW5kVmFsdWUsIGRvdWJsZSBkdXJhdGlv
bikKK3sKKyAgICBzdGF0aWMgaW50IGlkID0gMDsKKyAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVl
TGlzdCB2YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0eU9wYWNpdHkpOworICAgIHZhbHVlcy5pbnNlcnQo
bmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoMCwgc3RhcnRWYWx1ZSkpOworICAgIHZhbHVlcy5pbnNl
cnQobmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoZHVyYXRpb24sIGVuZFZhbHVlKSk7CisKKyAgICBS
ZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOworICAgIGFu
aW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24pOworCisgICAgSW50U2l6ZSBib3hTaXplOwor
ICAgIGxheWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkQW5pbWF0aW9uKHZhbHVl
cywgYm94U2l6ZSwgYW5pbWF0aW9uLmdldCgpLCBpZCwgMCwgMCk7CisgICAgcmV0dXJuIGlkKys7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KK3N0YXRpYyBpbnQgYWRkVHJhbnNm
b3JtQW5pbWF0aW9uVG9MYXllcihMYXllclR5cGUqIGxheWVyLCBkb3VibGUgZHVyYXRpb24pCit7
CisgICAgc3RhdGljIGludCBpZCA9IDA7CisgICAgV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3Qg
dmFsdWVzKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOworCisgICAgVHJhbnNmb3Jt
T3BlcmF0aW9ucyBvcGVyYXRpb25zMTsKKyAgICBvcGVyYXRpb25zMS5vcGVyYXRpb25zKCkuYXBw
ZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgyLCBGaXhlZCks
IExlbmd0aCgwLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKKyAg
ICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSgwLCAmb3BlcmF0aW9u
czEpKTsKKworICAgIFJlZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3Jl
YXRlKCk7CisgICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisKKyAgICBJbnRT
aXplIGJveFNpemU7CisgICAgbGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGRB
bmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksIGlkLCAwLCAwKTsKKyAg
ICByZXR1cm4gaWQrKzsKK30KKwordGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5
ZXJzPgorY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkxT25NYWlu
VGhyZWFkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1ZUxheWVy
cz4geworcHJvdGVjdGVkOgorICAgIHZvaWQgcnVuTXlUZXN0KCkKKyAgICB7CisgICAgICAgIHR5
cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290
KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAw
KSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRo
aXMtPmNyZWF0ZURyYXdpbmdMYXllcihwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1l
IFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1
cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExh
eWVyVHlwZSogc3VyZmFjZUNoaWxkID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHN1cmZhY2Us
IHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDIwMCwgMzAw
KSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJm
YWNlQ2hpbGQyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHN1cmZhY2UsIHRoaXMtPmlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMzAwKSwgdHJ1ZSk7CisK
KyAgICAgICAgYWRkT3BhY2l0eUFuaW1hdGlvblRvTGF5ZXIobGF5ZXIsIDAsIDEsIDEwKTsKKyAg
ICAgICAgYWRkT3BhY2l0eUFuaW1hdGlvblRvTGF5ZXIoc3VyZmFjZSwgMCwgMSwgMTApOworICAg
ICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOworCisgICAgICAgIEVYUEVDVF9UUlVFKGxh
eWVyLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Vy
ZmFjZS0+ZHJhd09wYWNpdHlJc0FuaW1hdGluZygpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3Vy
ZmFjZS0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOworCisgICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUs
IHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOworCisgICAgICAgIG9jY2x1c2lvbi5lbnRlclRhcmdldFJlbmRlclN1
cmZhY2Uoc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtP
Y2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZDIpOworICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDEwMCwgMCwgMjAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgICAgIG9jY2x1c2lv
bi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlQ2hpbGQpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDIwMCwgMCwgMTAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsKKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAwLCAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChzdXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBvY2NsdXNp
b24uZmluaXNoZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UsIHN1cmZhY2UtPnJlbmRlclN1
cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVyU3VyZmFjZShw
YXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIC8vIE9jY2x1c2lvbiBpcyBsb3N0IHdo
ZW4gbGVhdmluZyB0aGUgYW5pbWF0aW5nIHN1cmZhY2UuCisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24u
bWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICAvLyBPY2NsdXNpb24gaXMg
bm90IGFkZGVkIGZvciB0aGUgYW5pbWF0aW5nIGxheWVyLgorICAgICAgICBFWFBFQ1RfRVFfUkVD
VChJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVj
dChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgfQorfTsKKworTUFJTl9U
SFJFQURfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5U
aHJlYWQpOworCit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXllcnM+CitjbGFz
cyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTBPbk1haW5UaHJlYWQgOiBw
dWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90
ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlw
ZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAg
ICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRl
RHJhd2luZ0xheWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNv
bnRlbnRMYXllclR5cGUqIHN1cmZhY2UgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJl
bnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwg
MzAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBz
dXJmYWNlQ2hpbGQgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoc3VyZmFjZSwgdGhpcy0+aWRl
bnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAzMDApLCB0cnVlKTsK
KyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZhY2VDaGlsZDIg
PSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoc3VyZmFjZSwgdGhpcy0+aWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAzMDApLCB0cnVlKTsKKworICAgICAgICBh
ZGRPcGFjaXR5QW5pbWF0aW9uVG9MYXllcihsYXllciwgMSwgMCwgMTApOworICAgICAgICBhZGRP
cGFjaXR5QW5pbWF0aW9uVG9MYXllcihzdXJmYWNlLCAxLCAwLCAxMCk7CisgICAgICAgIHRoaXMt
PmNhbGNEcmF3RXRjKHBhcmVudCk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUobGF5ZXItPmRyYXdP
cGFjaXR5SXNBbmltYXRpbmcoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShzdXJmYWNlLT5kcmF3
T3BhY2l0eUlzQW5pbWF0aW5nKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShzdXJmYWNlLT5yZW5k
ZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSk7CisKKyAgICAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUg
VHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJm
YWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVo
aW5kTGF5ZXIoc3VyZmFjZUNoaWxkMik7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MTAwLCAwLCAyMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFj
ZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2Ns
dWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZCk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMjAwLCAwLCAxMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
c3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLm1h
cmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2UpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJ
bnRSZWN0KDAsIDAsIDAsIDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZh
Y2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hl
ZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsK
KyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVu
ZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgLy8gT2NjbHVzaW9uIGlzIGxvc3Qgd2hlbiBsZWF2aW5n
IHRoZSBhbmltYXRpbmcgc3VyZmFjZS4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCAzMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVk
ZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIC8vIE9jY2x1c2lvbiBpcyBub3QgYWRkZWQg
Zm9yIHRoZSBhbmltYXRpbmcgbGF5ZXIuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3Qo
MCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwg
SW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9OworCitNQUlOX1RIUkVBRF9URVNU
KENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5ME9uTWFpblRocmVhZCk7CisK
K3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNzIENDT2NjbHVz
aW9uVHJhY2tlclRlc3RBbmltYXRpb25UcmFuc2xhdGVPbk1haW5UaHJlYWQgOiBwdWJsaWMgQ0NP
Y2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJzPiB7Citwcm90ZWN0ZWQ6Cisg
ICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApKTsKKyAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xh
eWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNp
emUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXll
clR5cGUqIHN1cmZhY2UgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMt
PmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSwgdHJ1
ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBzdXJmYWNlQ2hp
bGQgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoc3VyZmFjZSwgdGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAg
dHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZhY2VDaGlsZDIgPSB0aGlzLT5j
cmVhdGVEcmF3aW5nTGF5ZXIoc3VyZmFjZSwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMTAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlw
ZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZhY2UyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ1N1cmZh
Y2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSg1MCwgMzAwKSwgdHJ1ZSk7CisKKyAgICAgICAgYWRkVHJhbnNmb3JtQW5pbWF0aW9uVG9MYXll
cihsYXllciwgMTApOworICAgICAgICBhZGRUcmFuc2Zvcm1BbmltYXRpb25Ub0xheWVyKHN1cmZh
Y2UsIDEwKTsKKyAgICAgICAgYWRkVHJhbnNmb3JtQW5pbWF0aW9uVG9MYXllcihzdXJmYWNlQ2hp
bGQsIDEwKTsKKyAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKKworICAgICAgICBF
WFBFQ1RfVFJVRShsYXllci0+ZHJhd1RyYW5zZm9ybXNBbmltYXRpbmdJblRhcmdldCgpKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUobGF5ZXItPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5TY3JlZW4o
KSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd1Ry
YW5zZm9ybXNBbmltYXRpbmdJblRhcmdldCgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3VyZmFj
ZS0+cmVuZGVyU3VyZmFjZSgpLT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGluZ0luU2NyZWVuKCkpOwor
ICAgICAgICAvLyBUaGUgc3VyZmFjZSBvd25pbmcgbGF5ZXIgZG9lc24ndCBhbmltYXRlIGFnYWlu
c3QgaXRzIG93biBzdXJmYWNlLgorICAgICAgICBFWFBFQ1RfRkFMU0Uoc3VyZmFjZS0+ZHJhd1Ry
YW5zZm9ybXNBbmltYXRpbmdJblRhcmdldCgpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3VyZmFj
ZS0+ZHJhd1RyYW5zZm9ybXNBbmltYXRpbmdJblNjcmVlbigpKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoc3VyZmFjZUNoaWxkLT5kcmF3VHJhbnNmb3Jtc0FuaW1hdGluZ0luVGFyZ2V0KCkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShzdXJmYWNlQ2hpbGQtPmRyYXdUcmFuc2Zvcm1zQW5pbWF0aW5nSW5T
Y3JlZW4oKSk7CisKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUg
VHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2Ns
dXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlMi0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAg
ICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2UyKTsKKyAgICAgICAg
b2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlMiwgc3VyZmFjZTIt
PnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5sZWF2ZVRvVGFyZ2V0UmVuZGVy
U3VyZmFjZShwYXJlbnQtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAwLCA1MCwgMzAwKSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lv
bkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVu
dGVyVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworCisgICAg
ICAgIC8vIFRoZSBsYXllciBpcyBtb3ZpbmcgaW4gc2NyZWVuIHNwYWNlIGJ1dCBub3QgcmVsYXRp
dmUgdG8gaXRzIHRhcmdldCwgc28gb2NjbHVzaW9uIHNob3VsZCBoYXBwZW4gaW4gaXRzIHRhcmdl
dCBzcGFjZSBvbmx5LgorICAgICAgICAvLyBJdCBhbHNvIG1lYW5zIHRoYXQgdGhpbmdzIG9jY2x1
ZGluZyBpbiBzY3JlZW4gc3BhY2UgKGUuZy4gc3VyZmFjZTIpIGNhbm5vdCBvY2NsdWRlIHRoaXMg
bGF5ZXIuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMTAwLCAzMDApLCBv
Y2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2VDaGlsZDIsIEludFJlY3QoMCwg
MCwgMTAwLCAzMDApKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQo
c3VyZmFjZUNoaWxkLCBJbnRSZWN0KDAsIDAsIDUwLCAzMDApKSk7CisKKyAgICAgICAgb2NjbHVz
aW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZDIpOworICAgICAgICBFWFBF
Q1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHN1cmZhY2VDaGlsZCwgSW50UmVjdCgwLCAwLCAx
MDAsIDMwMCkpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA1MCwgMzAw
KSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAg
IEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygp
LnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMTAwLCAzMDAp
LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAg
ICBFWFBFQ1RfRVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0
cygpLnNpemUoKSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAwLCAyMDAs
IDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgw
LCAwLCAzMDAsIDMwMCkpKTsKKworICAgICAgICAvLyBUaGUgc3VyZmFjZSBjaGlsZCBpcyBvY2Ns
dWRlZCBieSB0aGUgc3VyZmFjZUNoaWxkMiwgYnV0IGlzIG1vdmluZyByZWxhdGl2ZSBpdHMgdGFy
Z2V0IGFuZCB0aGUgc2NyZWVuLCBzbyBpdAorICAgICAgICAvLyBjYW4ndCBiZSBvY2NsdWRlZC4K
KyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAyMDAsIDMwMCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZUNoaWxkLCBJbnRSZWN0KDAsIDAsIDIwMCwg
MzAwKSkpOworICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKHN1cmZhY2VD
aGlsZCwgSW50UmVjdCgwLCAwLCA1MCwgMzAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5tYXJr
T2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlQ2hpbGQpOworICAgICAgICAvLyBUaGUgbGF5ZXIg
aXMgbW92aW5nIGluIHNjcmVlbiBzcGFjZSBidXQgbm90IHJlbGF0aXZlIHRvIGl0cyB0YXJnZXQs
IHNvIG9jY2x1c2lvbiBzaG91bGQgaGFwcGVuIGluIGl0cyB0YXJnZXQgc3BhY2Ugb25seS4KKyAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA1MCwgMzAwKSwgb2NjbHVzaW9uLm9j
Y2x1c2lvbkluU2NyZWVuU3BhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2UoKS5yZWN0cygpLnNpemUoKSk7CisgICAg
ICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgMTAwLCAzMDApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1RfRVEoMXUs
IG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5yZWN0cygpLnNpemUoKSk7Cisg
ICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAwLCAwLCAyMDAsIDMwMCksIG9jY2x1c2lv
bi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkp
KTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZSk7
CisgICAgICAgIC8vIFRoZSBsYXllciBpcyBtb3ZpbmcgaW4gc2NyZWVuIHNwYWNlIGJ1dCBub3Qg
cmVsYXRpdmUgdG8gaXRzIHRhcmdldCwgc28gb2NjbHVzaW9uIHNob3VsZCBoYXBwZW4gaW4gaXRz
IHRhcmdldCBzcGFjZSBvbmx5LgorICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAs
IDUwLCAzMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAz
MDAsIDMwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7
CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFj
ZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAw
LCAwLCAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0
KDAsIDAsIDMwMCwgMzAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5maW5pc2hlZFRhcmdldFJl
bmRlclN1cmZhY2Uoc3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAg
b2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+cmVuZGVyU3VyZmFj
ZSgpKTsKKyAgICAgICAgLy8gVGhlIHN1cmZhY2UgaXMgbW92aW5nIGluIHRoZSBzY3JlZW4gYW5k
IGluIGl0cyB0YXJnZXQsIHNvIGFsbCBvY2NsdXNpb24gaXMgbG9zdCB3aGVuIGxlYXZpbmcgaXQu
CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoNTAsIDAsIDI1MCwgMzAwKSwgb2NjbHVz
aW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDAp
KSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKGxheWVyKTsK
KyAgICAgICAgLy8gVGhlIGxheWVyIGlzIGFuaW1hdGluZyBpbiB0aGUgc2NyZWVuIGFuZCBpbiBp
dHMgdGFyZ2V0LCBzbyBubyBvY2NsdXNpb24gaXMgYWRkZWQuCisgICAgICAgIEVYUEVDVF9FUV9S
RUNUKEludFJlY3QoNTAsIDAsIDI1MCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50
UmVjdChwYXJlbnQsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgfQorfTsKKworTUFJ
Tl9USFJFQURfVEVTVChDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uVHJhbnNsYXRlT25N
YWluVGhyZWFkKTsKKwogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132509</attachid>
            <date>2012-03-18 16:55:12 -0700</date>
            <delta_ts>2012-03-18 18:07:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81354-20120318195511.patch</filename>
            <type>text/plain</type>
            <size>24524</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExMTM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRhYjA0ZTBkOWJhMjM2
YTgwZGRlOWVkMzdmNzYzZmYxNWQ3MzJlNy4uZDQ2ZjdmNGE1MDVhZGE3N2E3M2FlYzc3ODc4MzZj
ODNlZDI1YzgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2IEBACisyMDEyLTAzLTE2ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gRG9u
J3Qgb2NjbHVkZSBvbiBtYWluLXRocmVhZCBiZWhpbmQgbGF5ZXJzL3N1cmZhY2VzIHdpdGggaW1w
bC10aHJlYWQgYW5pbWF0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9ODEzNTQKKworICAgICAgICBSZXZpZXdlZCBieSBBZHJpZW5uZSBXYWxrZXIu
CisKKyAgICAgICAgTGF5ZXJzIGFuZCBzdXJmYWNlcyBjYW4gaGF2ZSBhbiBhbmltYXRpbmcgb3Bh
Y2l0eSBvciB0cmFuc2xhdGlvbiBvbiB0aGUKKyAgICAgICAgaW1wbCB0aHJlYWQuIEluIHRoaXMg
Y2FzZSwgdGhlIG1haW4gdGhyZWFkIGRvZXMgbm90IGtub3cgdGhlaXIgYWN0dWFsCisgICAgICAg
IHZhbHVlcywgYW5kIHRyZWF0cyB0aGVzZSB2YWx1ZXMgYXMgInVua25vd25zIi4gVGhpcyBtZWFu
cyB3ZSBjYW4ndCB1c2UKKyAgICAgICAgdGhlbSBmb3IgbWFya2luZyBhcmVhcyBvZiB0aGUgc2Ny
ZWVuIGFzIG9jY2x1ZGVkLCBhbmQgd2UgY2FuJ3QgY29uc2lkZXIKKyAgICAgICAgYSBwYXJ0IG9m
IGEgbGF5ZXIgb2NjbHVkZWQgaW4gYSBzcGFjZSB0aGF0IHdlIGNhbiBub3QgcmVsaWFibHkgdHJh
bnNmb3JtCisgICAgICAgIHRvLgorCisgICAgICAgIFVuaXQgdGVzdDogQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWluVGhyZWFkCisgICAgICAgICAgICAgICAgICAg
Q0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkxT25NYWluVGhyZWFkCisgICAg
ICAgICAgICAgICAgICAgQ0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvblRyYW5zbGF0ZU9u
TWFpblRocmVhZAorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NP
Y2NsdXNpb25UcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyT3BhY2l0eUtub3du
KToKKyAgICAgICAgKFdlYkNvcmU6OmxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24pOgorICAg
ICAgICAoV2ViQ29yZTo6bGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bik6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnN1cmZhY2VPcGFjaXR5VW5rbm93bik6CisgICAg
ICAgIChXZWJDb3JlOjpzdXJmYWNlVHJhbnNmb3Jtc1RvVGFyZ2V0VW5rbm93bik6CisgICAgICAg
IChXZWJDb3JlOjpzdXJmYWNlVHJhbnNmb3Jtc1RvU2NyZWVuVW5rbm93bik6CisgICAgICAgIChX
ZWJDb3JlOjo6OmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpjb250
ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6OjpvY2NsdWRlZCk6CisgICAg
ICAgIChXZWJDb3JlOjo6OnVub2NjbHVkZWRDb250ZW50UmVjdCk6CisKIDIwMTItMDMtMTggIERh
dmlkIFJldmVtYW4gIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbnZhbGlkYXRp
b24gaXNzdWUgd2hlbiBjcmVhdGluZyBiYWNraW5nIGxheWVyIGZvciBmaXhlZCBwb3NpdGlvbmVk
IGVsZW1lbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDhiYWIwZmRkYjQ0MTgyMTFj
NzkwYWEyMDhjMDMzZTgwMTBhMmM0NWYuLjljYzMwN2RjZmJiODgwNTU0NTU0MWY3MWNiZjcyOTkz
YTE3MzYzYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTItMDMtMTYgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
W2Nocm9taXVtXSBEb24ndCBvY2NsdWRlIG9uIG1haW4tdGhyZWFkIGJlaGluZCBsYXllcnMvc3Vy
ZmFjZXMgd2l0aCBpbXBsLXRocmVhZCBhbmltYXRpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MTM1NAorCisgICAgICAgIFJldmlld2VkIGJ5IEFk
cmllbm5lIFdhbGtlci4KKworICAgICAgICAqIHRlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjphZGRPcGFjaXR5QW5p
bWF0aW9uVG9MYXllcik6CisgICAgICAgIChXZWJDb3JlOjphZGRUcmFuc2Zvcm1BbmltYXRpb25U
b0xheWVyKToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5
MU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5UaHJlYWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTBPbk1haW5UaHJlYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWlu
VGhyZWFkOjpydW5NeVRlc3QpOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1h
dGlvblRyYW5zbGF0ZU9uTWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lv
blRyYWNrZXJUZXN0QW5pbWF0aW9uVHJhbnNsYXRlT25NYWluVGhyZWFkOjpydW5NeVRlc3QpOgor
CiAyMDEyLTAzLTE4ICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIFtjaHJvbWl1bV0gVHJhbnNmb3JtIGFuaW1hdGlvbiBzdGF0ZSBzaG91bGQgYmUgaW5oZXJp
dGVkIGZyb20gcGFyZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKaW5k
ZXggYzY5YTRkOWM4MWQyMTQ4YWUwYWM3ZDc4OTkwNjEyYThmZWJmOTViMi4uNGM2MTdhZDY3ZTQ2
MWY2YmY2ZWY4YzYyMzA1OTUwYjdlYTVjY2ZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lv
blRyYWNrZXIuY3BwCkBAIC03Myw2ICs3MywyMCBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmVudGVyVGFyZ2V0UmVuZGVyU3VyZgog
ICAgIH0KIH0KIAorc3RhdGljIGlubGluZSBib29sIGxheWVyT3BhY2l0eUtub3duKGNvbnN0IExh
eWVyQ2hyb21pdW0qIGxheWVyKSB7IHJldHVybiAhbGF5ZXItPmRyYXdPcGFjaXR5SXNBbmltYXRp
bmcoKTsgfQorc3RhdGljIGlubGluZSBib29sIGxheWVyT3BhY2l0eUtub3duKGNvbnN0IENDTGF5
ZXJJbXBsKikgeyByZXR1cm4gdHJ1ZTsgfQorc3RhdGljIGlubGluZSBib29sIGxheWVyVHJhbnNm
b3Jtc1RvVGFyZ2V0S25vd24oY29uc3QgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIHsgcmV0dXJuICFs
YXllci0+ZHJhd1RyYW5zZm9ybUlzQW5pbWF0aW5nKCk7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBs
YXllclRyYW5zZm9ybXNUb1RhcmdldEtub3duKGNvbnN0IENDTGF5ZXJJbXBsKikgeyByZXR1cm4g
dHJ1ZTsgfQorc3RhdGljIGlubGluZSBib29sIGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24o
Y29uc3QgTGF5ZXJDaHJvbWl1bSogbGF5ZXIpIHsgcmV0dXJuICFsYXllci0+c2NyZWVuU3BhY2VU
cmFuc2Zvcm1Jc0FuaW1hdGluZygpOyB9CitzdGF0aWMgaW5saW5lIGJvb2wgbGF5ZXJUcmFuc2Zv
cm1zVG9TY3JlZW5Lbm93bihjb25zdCBDQ0xheWVySW1wbCopIHsgcmV0dXJuIHRydWU7IH0KKwor
c3RhdGljIGlubGluZSBib29sIHN1cmZhY2VPcGFjaXR5S25vd24oY29uc3QgUmVuZGVyU3VyZmFj
ZUNocm9taXVtKiBzdXJmYWNlKSB7IHJldHVybiAhc3VyZmFjZS0+ZHJhd09wYWNpdHlJc0FuaW1h
dGluZygpOyB9CitzdGF0aWMgaW5saW5lIGJvb2wgc3VyZmFjZU9wYWNpdHlLbm93bihjb25zdCBD
Q1JlbmRlclN1cmZhY2UqKSB7IHJldHVybiB0cnVlOyB9CitzdGF0aWMgaW5saW5lIGJvb2wgc3Vy
ZmFjZVRyYW5zZm9ybXNUb1RhcmdldEtub3duKGNvbnN0IFJlbmRlclN1cmZhY2VDaHJvbWl1bSog
c3VyZmFjZSkgeyByZXR1cm4gIXN1cmZhY2UtPnRhcmdldFN1cmZhY2VUcmFuc2Zvcm1zQXJlQW5p
bWF0aW5nKCk7IH0KK3N0YXRpYyBpbmxpbmUgYm9vbCBzdXJmYWNlVHJhbnNmb3Jtc1RvVGFyZ2V0
S25vd24oY29uc3QgQ0NSZW5kZXJTdXJmYWNlKikgeyByZXR1cm4gdHJ1ZTsgfQorc3RhdGljIGlu
bGluZSBib29sIHN1cmZhY2VUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihjb25zdCBSZW5kZXJTdXJm
YWNlQ2hyb21pdW0qIHN1cmZhY2UpIHsgcmV0dXJuICFzdXJmYWNlLT5zY3JlZW5TcGFjZVRyYW5z
Zm9ybXNBcmVBbmltYXRpbmcoKTsgfQorc3RhdGljIGlubGluZSBib29sIHN1cmZhY2VUcmFuc2Zv
cm1zVG9TY3JlZW5Lbm93bihjb25zdCBDQ1JlbmRlclN1cmZhY2UqKSB7IHJldHVybiB0cnVlOyB9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5
cGU+CiB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZT46OmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShjb25zdCBMYXllclR5cGUqIG93bmlu
Z0xheWVyLCBjb25zdCBSZW5kZXJTdXJmYWNlVHlwZSogZmluaXNoZWRUYXJnZXQpCiB7CkBAIC04
Miw5ICs5NiwxNSBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5k
ZXJTdXJmYWNlVHlwZT46OmZpbmlzaGVkVGFyZ2V0UmVuZGVyUwogICAgIC8vIE1ha2Ugc3VyZSB3
ZSBrbm93IGFib3V0IHRoZSB0YXJnZXQgc3VyZmFjZS4KICAgICBlbnRlclRhcmdldFJlbmRlclN1
cmZhY2UoZmluaXNoZWRUYXJnZXQpOwogCi0gICAgaWYgKG93bmluZ0xheWVyLT5tYXNrTGF5ZXIo
KSB8fCBmaW5pc2hlZFRhcmdldC0+ZHJhd09wYWNpdHkoKSA8IDEgfHwgZmluaXNoZWRUYXJnZXQt
PmZpbHRlcnMoKS5oYXNGaWx0ZXJUaGF0QWZmZWN0c09wYWNpdHkoKSkgeworICAgIC8vIElmIHRo
ZSBvY2NsdXNpb24gd2l0aGluIHRoZSBzdXJmYWNlIGNhbiBub3QgYmUgYXBwbGllZCB0byB0aGlu
Z3Mgb3V0c2lkZSBvZiB0aGUgc3VyZmFjZSdzIHN1YnRyZWUsIHRoZW4gY2xlYXIgdGhlIG9jY2x1
c2lvbiBoZXJlIHNvIGl0IHdvbid0IGJlIHVzZWQuCisgICAgaWYgKG93bmluZ0xheWVyLT5tYXNr
TGF5ZXIoKSB8fCAhc3VyZmFjZU9wYWNpdHlLbm93bihmaW5pc2hlZFRhcmdldCkgfHwgZmluaXNo
ZWRUYXJnZXQtPmRyYXdPcGFjaXR5KCkgPCAxIHx8IGZpbmlzaGVkVGFyZ2V0LT5maWx0ZXJzKCku
aGFzRmlsdGVyVGhhdEFmZmVjdHNPcGFjaXR5KCkpIHsKICAgICAgICAgbV9zdGFjay5sYXN0KCku
b2NjbHVzaW9uSW5TY3JlZW4gPSBSZWdpb24oKTsKICAgICAgICAgbV9zdGFjay5sYXN0KCkub2Nj
bHVzaW9uSW5UYXJnZXQgPSBSZWdpb24oKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoIXN1
cmZhY2VUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihmaW5pc2hlZFRhcmdldCkpCisgICAgICAgICAg
ICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCA9IFJlZ2lvbigpOworICAgICAgICBp
ZiAoIXN1cmZhY2VUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihmaW5pc2hlZFRhcmdldCkpCisgICAg
ICAgICAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbiA9IFJlZ2lvbigpOwogICAg
IH0KIH0KIApAQCAtMTQxLDYgKzE2MSw3IEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bGVhdmVUb1RhcmdldFJlbmRlclN1CiB0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+CiBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtKGNvbnN0IExheWVyVHlwZSogbGF5ZXIp
CiB7CisgICAgQVNTRVJUKGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpKTsKICAg
ICBJbnRTaXplIGJvdW5kc0luTGF5ZXJTcGFjZSA9IGxheWVyLT5ib3VuZHMoKTsKICAgICBJbnRT
aXplIGJvdW5kc0luQ29udGVudFNwYWNlID0gbGF5ZXItPmNvbnRlbnRCb3VuZHMoKTsKIApAQCAt
MTU5LDYgKzE4MCw3IEBAIHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVu
dFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgTGF5ZXJUeXBlCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBMYXllclR5cGU+CiBzdGF0aWMgaW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRU
b1RhcmdldFN1cmZhY2VUcmFuc2Zvcm0oY29uc3QgTGF5ZXJUeXBlKiBsYXllcikKIHsKKyAgICBB
U1NFUlQobGF5ZXJUcmFuc2Zvcm1zVG9UYXJnZXRLbm93bihsYXllcikpOwogICAgIEludFNpemUg
Ym91bmRzSW5MYXllclNwYWNlID0gbGF5ZXItPmJvdW5kcygpOwogICAgIEludFNpemUgYm91bmRz
SW5Db250ZW50U3BhY2UgPSBsYXllci0+Y29udGVudEJvdW5kcygpOwogCkBAIC0yMDksMTUgKzIz
MSwxNCBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJm
YWNlVHlwZT46Om1hcmtPY2NsdWRlZEJlaGluZExheQogICAgIGlmIChtX3N0YWNrLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGxheWVyLT5kcmF3T3BhY2l0eSgpICE9IDEp
CisgICAgaWYgKCFsYXllck9wYWNpdHlLbm93bihsYXllcikgfHwgbGF5ZXItPmRyYXdPcGFjaXR5
KCkgPCAxKQogICAgICAgICByZXR1cm47CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250
ZW50VG9TY3JlZW5TcGFjZSA9IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlw
ZT4obGF5ZXIpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1RhcmdldFN1cmZh
Y2UgPSBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpOwot
CiAgICAgLy8gRklYTUU6IFJlbW92ZSBtX3VzZVBhaW50VHJhY2tpbmcgd2hlbiBwYWludCB0cmFj
a2luZyBpcyBvbiBmb3IgcGFpbnQgY3VsbGluZy4KLSAgICBtX3N0YWNrLmxhc3QoKS5vY2NsdXNp
b25JblNjcmVlbi51bml0ZShjb21wdXRlT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihs
YXllciwgY29udGVudFRvU2NyZWVuU3BhY2UsIG1fdXNlUGFpbnRUcmFja2luZykpOwotICAgIG1f
c3RhY2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0LnVuaXRlKGNvbXB1dGVPY2NsdXNpb25CZWhp
bmRMYXllcjxMYXllclR5cGU+KGxheWVyLCBjb250ZW50VG9UYXJnZXRTdXJmYWNlLCBtX3VzZVBh
aW50VHJhY2tpbmcpKTsKKyAgICBpZiAobGF5ZXJUcmFuc2Zvcm1zVG9TY3JlZW5Lbm93bihsYXll
cikpCisgICAgICAgIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuLnVuaXRlKGNvbXB1
dGVPY2NsdXNpb25CZWhpbmRMYXllcjxMYXllclR5cGU+KGxheWVyLCBjb250ZW50VG9TY3JlZW5T
cGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwgbV91c2VQYWludFRyYWNraW5nKSk7Cisg
ICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24obGF5ZXIpKQorICAgICAgICBtX3N0
YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldC51bml0ZShjb21wdXRlT2NjbHVzaW9uQmVoaW5k
TGF5ZXI8TGF5ZXJUeXBlPihsYXllciwgY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybTxM
YXllclR5cGU+KGxheWVyKSwgbV91c2VQYWludFRyYWNraW5nKSk7CiB9CiAKIHN0YXRpYyBpbmxp
bmUgYm9vbCB0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVj
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSwgY29u
c3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVzaW9uKQpAQCAtMjM5
LDkgKzI2MCw5IEBAIGJvb2wgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlPjo6b2NjbHVkZWQoY29uc3QgTGF5ZXJUCiAKICAgICBBU1NFUlQobGF5ZXIt
PnRhcmdldFJlbmRlclN1cmZhY2UoKSA9PSBtX3N0YWNrLmxhc3QoKS5zdXJmYWNlKTsKIAotICAg
IGlmICh0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb250ZW50UmVjdCwgY29udGVudFRvU2NyZWVu
U3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNw
YWNlLCBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbikpCisgICAgaWYgKGxheWVyVHJh
bnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpICYmIHRlc3RDb250ZW50UmVjdE9jY2x1ZGVkKGNv
bnRlbnRSZWN0LCBjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVy
KSwgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbklu
U2NyZWVuKSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHRlc3RDb250ZW50UmVjdE9j
Y2x1ZGVkKGNvbnRlbnRSZWN0LCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtPExheWVy
VHlwZT4obGF5ZXIpLCBsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVyKSwgbV9z
dGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQpKQorICAgIGlmIChsYXllclRyYW5zZm9ybXNU
b1RhcmdldEtub3duKGxheWVyKSAmJiB0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb250ZW50UmVj
dCwgY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKSwgbGF5
ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllciksIG1fc3RhY2subGFzdCgpLm9jY2x1
c2lvbkluVGFyZ2V0KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQpAQCAtMzA3LDEzICszMjgsMTYgQEAgSW50UmVjdCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+Ojp1bm9jY2x1ZGVkQ29udGVudFIKICAgICAvLyBX
ZSB3YW50IHRvIHJldHVybiBhIHJlY3QgdGhhdCBjb250YWlucyBhbGwgdGhlIHZpc2libGUgcGFy
dHMgb2YgfGNvbnRlbnRSZWN0fCBpbiBib3RoIHNjcmVlbiBzcGFjZSBhbmQgaW4gdGhlIHRhcmdl
dCBzdXJmYWNlLgogICAgIC8vIFNvIHdlIGZpbmQgdGhlIHZpc2libGUgcGFydHMgb2YgfGNvbnRl
bnRSZWN0fCBpbiBlYWNoIHNwYWNlLCBhbmQgdGFrZSB0aGUgaW50ZXJzZWN0aW9uLgogCi0gICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2UgPSBjb250ZW50VG9TY3Jl
ZW5TcGFjZVRyYW5zZm9ybTxMYXllclR5cGU+KGxheWVyKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBjb250ZW50VG9UYXJnZXRTdXJmYWNlID0gY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5z
Zm9ybTxMYXllclR5cGU+KGxheWVyKTsKKyAgICBJbnRSZWN0IHVub2NjbHVkZWRJblNjcmVlbiA9
IGNvbnRlbnRSZWN0OworICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1NjcmVlbktub3duKGxheWVy
KSkKKyAgICAgICAgdW5vY2NsdWRlZEluU2NyZWVuID0gY29tcHV0ZVVub2NjbHVkZWRDb250ZW50
UmVjdChjb250ZW50UmVjdCwgY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBl
PihsYXllciksIG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBtX3N0YWNrLmxhc3QoKS5vY2Ns
dXNpb25JblNjcmVlbik7CiAKLSAgICBJbnRSZWN0IHVub2NjbHVkZWRJblNjcmVlbiA9IGNvbXB1
dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29udGVudFJlY3QsIGNvbnRlbnRUb1NjcmVlblNwYWNl
LCBtX3NjaXNzb3JSZWN0SW5TY3JlZW5TcGFjZSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5T
Y3JlZW4pOwogICAgIGlmICh1bm9jY2x1ZGVkSW5TY3JlZW4uaXNFbXB0eSgpKQotICAgICAgICBy
ZXR1cm4gSW50UmVjdCgpOwotICAgIEludFJlY3QgdW5vY2NsdWRlZEluVGFyZ2V0ID0gY29tcHV0
ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb250ZW50UmVjdCwgY29udGVudFRvVGFyZ2V0U3VyZmFj
ZSwgbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllciksIG1fc3RhY2subGFzdCgp
Lm9jY2x1c2lvbkluVGFyZ2V0KTsKKyAgICAgICAgcmV0dXJuIHVub2NjbHVkZWRJblNjcmVlbjsK
KworICAgIEludFJlY3QgdW5vY2NsdWRlZEluVGFyZ2V0ID0gY29udGVudFJlY3Q7CisgICAgaWYg
KGxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24obGF5ZXIpKQorICAgICAgICB1bm9jY2x1ZGVk
SW5UYXJnZXQgPSBjb21wdXRlVW5vY2NsdWRlZENvbnRlbnRSZWN0KGNvbnRlbnRSZWN0LCBjb250
ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBsYXllclNjaXNz
b3JSZWN0SW5UYXJnZXRTdXJmYWNlKGxheWVyKSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5U
YXJnZXQpOwogCiAgICAgcmV0dXJuIGludGVyc2VjdGlvbih1bm9jY2x1ZGVkSW5TY3JlZW4sIHVu
b2NjbHVkZWRJblRhcmdldCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAppbmRleCBmMjIwMTUyNDMwYTcxMTli
OTlhMTBmNTZhNmFjZWE0ZTU4MDQ4ODI4Li5lMjgxNDE1Y2IzYTViMzcyZGJlYTViNzU5Nzg0MTUz
OGJjM2MzNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2Nj
bHVzaW9uVHJhY2tlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJM
YXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUmVnaW9uLmgiCiAjaW5jbHVkZSAiVHJhbnNmb3Jt
YXRpb25NYXRyaXguaCIKKyNpbmNsdWRlICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIK
KyNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNj
L0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmgiCiAj
aW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgpAQCAtMTY3NCw0ICsxNjc2LDIwNiBA
QCBwcm90ZWN0ZWQ6CiAKIE1BSU5fVEhSRUFEX1RFU1QoQ0NPY2NsdXNpb25UcmFja2VyVGVzdFBl
cnNwZWN0aXZlVHJhbnNmb3JtQmVoaW5kQ2FtZXJhKTsKIAordGVtcGxhdGU8dHlwZW5hbWUgTGF5
ZXJUeXBlPgorc3RhdGljIGludCBhZGRPcGFjaXR5QW5pbWF0aW9uVG9MYXllcihMYXllclR5cGUq
IGxheWVyLCBmbG9hdCBzdGFydFZhbHVlLCBmbG9hdCBlbmRWYWx1ZSwgZG91YmxlIGR1cmF0aW9u
KQoreworICAgIHN0YXRpYyBpbnQgaWQgPSAwOworICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVM
aXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7CisgICAgdmFsdWVzLmluc2VydChu
ZXcgRmxvYXRBbmltYXRpb25WYWx1ZSgwLCBzdGFydFZhbHVlKSk7CisgICAgdmFsdWVzLmluc2Vy
dChuZXcgRmxvYXRBbmltYXRpb25WYWx1ZShkdXJhdGlvbiwgZW5kVmFsdWUpKTsKKworICAgIFJl
ZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CisgICAgYW5p
bWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisKKyAgICBJbnRTaXplIGJveFNpemU7Cisg
ICAgbGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGRBbmltYXRpb24odmFsdWVz
LCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCksIGlkLCAwLCAwKTsKKyAgICByZXR1cm4gaWQrKzsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlPgorc3RhdGljIGludCBhZGRUcmFuc2Zv
cm1BbmltYXRpb25Ub0xheWVyKExheWVyVHlwZSogbGF5ZXIsIGRvdWJsZSBkdXJhdGlvbikKK3sK
KyAgICBzdGF0aWMgaW50IGlkID0gMDsKKyAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2
YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CisKKyAgICBUcmFuc2Zvcm1P
cGVyYXRpb25zIG9wZXJhdGlvbnMxOworICAgIG9wZXJhdGlvbnMxLm9wZXJhdGlvbnMoKS5hcHBl
bmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDIsIEZpeGVkKSwg
TGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOworICAg
IHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZvcGVyYXRpb25z
MSkpOworCisgICAgUmVmUHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uID0gQW5pbWF0aW9uOjpjcmVh
dGUoKTsKKyAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0aW9uKTsKKworICAgIEludFNp
emUgYm94U2l6ZTsKKyAgICBsYXllci0+bGF5ZXJBbmltYXRpb25Db250cm9sbGVyKCktPmFkZEFu
aW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlvbi5nZXQoKSwgaWQsIDAsIDApOworICAg
IHJldHVybiBpZCsrOworfQorCit0ZW1wbGF0ZTxjbGFzcyBUeXBlcywgYm9vbCBvcGFxdWVMYXll
cnM+CitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5U
aHJlYWQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgb3BhcXVlTGF5ZXJz
PiB7Citwcm90ZWN0ZWQ6CisgICAgdm9pZCBydW5NeVRlc3QoKQorICAgIHsKKyAgICAgICAgdHlw
ZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3Qo
dGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDAp
KTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhp
cy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0
UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUg
VHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZhY2UgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3Vy
ZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRT
aXplKDMwMCwgMzAwKSwgdHJ1ZSk7CisgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5
ZXJUeXBlKiBzdXJmYWNlQ2hpbGQgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoc3VyZmFjZSwg
dGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMjAwLCAzMDAp
LCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZh
Y2VDaGlsZDIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5ZXIoc3VyZmFjZSwgdGhpcy0+aWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAzMDApLCB0cnVlKTsKKwor
ICAgICAgICBhZGRPcGFjaXR5QW5pbWF0aW9uVG9MYXllcihsYXllciwgMCwgMSwgMTApOworICAg
ICAgICBhZGRPcGFjaXR5QW5pbWF0aW9uVG9MYXllcihzdXJmYWNlLCAwLCAxLCAxMCk7CisgICAg
ICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CisKKyAgICAgICAgRVhQRUNUX1RSVUUobGF5
ZXItPmRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSk7CisgICAgICAgIEVYUEVDVF9GQUxTRShzdXJm
YWNlLT5kcmF3T3BhY2l0eUlzQW5pbWF0aW5nKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShzdXJm
YWNlLT5yZW5kZXJTdXJmYWNlKCktPmRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSk7CisKKyAgICAg
ICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckJhc2U8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwg
dHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmVudGVyVGFyZ2V0UmVuZGVyU3Vy
ZmFjZShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxkMik7CisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMTAwLCAwLCAyMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJl
Y3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9u
Lm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2VDaGlsZCk7CisgICAgICAgIEVYUEVDVF9F
UV9SRUNUKEludFJlY3QoMjAwLCAwLCAxMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29u
dGVudFJlY3Qoc3VyZmFjZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgb2Nj
bHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExheWVyKHN1cmZhY2UpOworICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRS
ZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisgICAgICAgIG9jY2x1c2lv
bi5maW5pc2hlZFRhcmdldFJlbmRlclN1cmZhY2Uoc3VyZmFjZSwgc3VyZmFjZS0+cmVuZGVyU3Vy
ZmFjZSgpKTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBh
cmVudC0+cmVuZGVyU3VyZmFjZSgpKTsKKyAgICAgICAgLy8gT2NjbHVzaW9uIGlzIGxvc3Qgd2hl
biBsZWF2aW5nIHRoZSBhbmltYXRpbmcgc3VyZmFjZS4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1Qo
SW50UmVjdCgwLCAwLCAzMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qo
cGFyZW50LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworCisgICAgICAgIG9jY2x1c2lvbi5t
YXJrT2NjbHVkZWRCZWhpbmRMYXllcihsYXllcik7CisgICAgICAgIC8vIE9jY2x1c2lvbiBpcyBu
b3QgYWRkZWQgZm9yIHRoZSBhbmltYXRpbmcgbGF5ZXIuCisgICAgICAgIEVYUEVDVF9FUV9SRUNU
KEludFJlY3QoMCwgMCwgMzAwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0
KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9OworCitNQUlOX1RI
UkVBRF9URVNUKENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5MU9uTWFpblRo
cmVhZCk7CisKK3RlbXBsYXRlPGNsYXNzIFR5cGVzLCBib29sIG9wYXF1ZUxheWVycz4KK2NsYXNz
IENDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25PcGFjaXR5ME9uTWFpblRocmVhZCA6IHB1
YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3Rl
Y3RlZDoKKyAgICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICB0eXBlbmFtZSBUeXBl
czo6Q29udGVudExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgICAg
ICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVE
cmF3aW5nTGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29u
dGVudExheWVyVHlwZSogc3VyZmFjZSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVu
dCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAz
MDApLCB0cnVlKTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1
cmZhY2VDaGlsZCA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihzdXJmYWNlLCB0aGlzLT5pZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDMwMCksIHRydWUpOwor
ICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogc3VyZmFjZUNoaWxkMiA9
IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihzdXJmYWNlLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwg
RmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDMwMCksIHRydWUpOworCisgICAgICAgIGFk
ZE9wYWNpdHlBbmltYXRpb25Ub0xheWVyKGxheWVyLCAxLCAwLCAxMCk7CisgICAgICAgIGFkZE9w
YWNpdHlBbmltYXRpb25Ub0xheWVyKHN1cmZhY2UsIDEsIDAsIDEwKTsKKyAgICAgICAgdGhpcy0+
Y2FsY0RyYXdFdGMocGFyZW50KTsKKworICAgICAgICBFWFBFQ1RfVFJVRShsYXllci0+ZHJhd09w
YWNpdHlJc0FuaW1hdGluZygpKTsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN1cmZhY2UtPmRyYXdP
cGFjaXR5SXNBbmltYXRpbmcoKSk7CisgICAgICAgIEVYUEVDVF9UUlVFKHN1cmZhY2UtPnJlbmRl
clN1cmZhY2UoKS0+ZHJhd09wYWNpdHlJc0FuaW1hdGluZygpKTsKKworICAgICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBU
eXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZh
Y2UtPnJlbmRlclN1cmZhY2UoKSk7CisgICAgICAgIG9jY2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhp
bmRMYXllcihzdXJmYWNlQ2hpbGQyKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgx
MDAsIDAsIDIwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNl
LCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxkKTsKKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50
UmVjdCgyMDAsIDAsIDEwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChz
dXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgICAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZSk7CisgICAgICAgIEVYUEVDVF9FUV9SRUNUKElu
dFJlY3QoMCwgMCwgMCwgMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3Qoc3VyZmFj
ZSwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVk
VGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJmYWNlLCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOwor
ICAgICAgICBvY2NsdXNpb24ubGVhdmVUb1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5k
ZXJTdXJmYWNlKCkpOworICAgICAgICAvLyBPY2NsdXNpb24gaXMgbG9zdCB3aGVuIGxlYXZpbmcg
dGhlIGFuaW1hdGluZyBzdXJmYWNlLgorICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAs
IDAsIDMwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250ZW50UmVjdChwYXJlbnQsIElu
dFJlY3QoMCwgMCwgMzAwLCAzMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRl
ZEJlaGluZExheWVyKGxheWVyKTsKKyAgICAgICAgLy8gT2NjbHVzaW9uIGlzIG5vdCBhZGRlZCBm
b3IgdGhlIGFuaW1hdGluZyBsYXllci4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgw
LCAwLCAzMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1ZGVkQ29udGVudFJlY3QocGFyZW50LCBJ
bnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworICAgIH0KK307CisKK01BSU5fVEhSRUFEX1RFU1Qo
Q0NPY2NsdXNpb25UcmFja2VyVGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWluVGhyZWFkKTsKKwor
dGVtcGxhdGU8Y2xhc3MgVHlwZXMsIGJvb2wgb3BhcXVlTGF5ZXJzPgorY2xhc3MgQ0NPY2NsdXNp
b25UcmFja2VyVGVzdEFuaW1hdGlvblRyYW5zbGF0ZU9uTWFpblRocmVhZCA6IHB1YmxpYyBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0PFR5cGVzLCBvcGFxdWVMYXllcnM+IHsKK3Byb3RlY3RlZDoKKyAg
ICB2b2lkIHJ1bk15VGVzdCgpCisgICAgeworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVu
dExheWVyVHlwZSogcGFyZW50ID0gdGhpcy0+Y3JlYXRlUm9vdCh0aGlzLT5pZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMDAsIDMwMCkpOworICAgICAgICB0eXBlbmFt
ZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nTGF5
ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6
ZSgzMDAsIDMwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVy
VHlwZSogc3VyZmFjZSA9IHRoaXMtPmNyZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+
aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMzAwLCAzMDApLCB0cnVl
KTsKKyAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHN1cmZhY2VDaGls
ZCA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihzdXJmYWNlLCB0aGlzLT5pZGVudGl0eU1hdHJp
eCwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSgyMDAsIDMwMCksIHRydWUpOworICAgICAgICB0
eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogc3VyZmFjZUNoaWxkMiA9IHRoaXMtPmNy
ZWF0ZURyYXdpbmdMYXllcihzdXJmYWNlLCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLCAwKSwgSW50U2l6ZSgxMDAsIDMwMCksIHRydWUpOworICAgICAgICB0eXBlbmFtZSBUeXBl
czo6Q29udGVudExheWVyVHlwZSogc3VyZmFjZTIgPSB0aGlzLT5jcmVhdGVEcmF3aW5nU3VyZmFj
ZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXpl
KDUwLCAzMDApLCB0cnVlKTsKKworICAgICAgICBhZGRUcmFuc2Zvcm1BbmltYXRpb25Ub0xheWVy
KGxheWVyLCAxMCk7CisgICAgICAgIGFkZFRyYW5zZm9ybUFuaW1hdGlvblRvTGF5ZXIoc3VyZmFj
ZSwgMTApOworICAgICAgICBhZGRUcmFuc2Zvcm1BbmltYXRpb25Ub0xheWVyKHN1cmZhY2VDaGls
ZCwgMTApOworICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOworCisgICAgICAgIEVY
UEVDVF9UUlVFKGxheWVyLT5kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmcoKSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybUlzQW5pbWF0aW5nKCkpOworICAg
ICAgICBFWFBFQ1RfVFJVRShzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCktPnRhcmdldFN1cmZhY2VU
cmFuc2Zvcm1zQXJlQW5pbWF0aW5nKCkpOworICAgICAgICBFWFBFQ1RfVFJVRShzdXJmYWNlLT5y
ZW5kZXJTdXJmYWNlKCktPnNjcmVlblNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZygpKTsKKyAg
ICAgICAgLy8gVGhlIHN1cmZhY2Ugb3duaW5nIGxheWVyIGRvZXNuJ3QgYW5pbWF0ZSBhZ2FpbnN0
IGl0cyBvd24gc3VyZmFjZS4KKyAgICAgICAgRVhQRUNUX0ZBTFNFKHN1cmZhY2UtPmRyYXdUcmFu
c2Zvcm1Jc0FuaW1hdGluZygpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3VyZmFjZS0+c2NyZWVu
U3BhY2VUcmFuc2Zvcm1Jc0FuaW1hdGluZygpKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoc3VyZmFj
ZUNoaWxkLT5kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmcoKSk7CisgICAgICAgIEVYUEVDVF9UUlVF
KHN1cmZhY2VDaGlsZC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm1Jc0FuaW1hdGluZygpKTsKKworICAg
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBl
LCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKHN1cmZhY2UyLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubWFy
a09jY2x1ZGVkQmVoaW5kTGF5ZXIoc3VyZmFjZTIpOworICAgICAgICBvY2NsdXNpb24uZmluaXNo
ZWRUYXJnZXRSZW5kZXJTdXJmYWNlKHN1cmZhY2UyLCBzdXJmYWNlMi0+cmVuZGVyU3VyZmFjZSgp
KTsKKyAgICAgICAgb2NjbHVzaW9uLmxlYXZlVG9UYXJnZXRSZW5kZXJTdXJmYWNlKHBhcmVudC0+
cmVuZGVyU3VyZmFjZSgpKTsKKworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAs
IDUwLCAzMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgp
LnJlY3RzKCkuc2l6ZSgpKTsKKworICAgICAgICBvY2NsdXNpb24uZW50ZXJUYXJnZXRSZW5kZXJT
dXJmYWNlKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKSk7CisKKyAgICAgICAgLy8gVGhlIGxheWVy
IGlzIG1vdmluZyBpbiBzY3JlZW4gc3BhY2UgYnV0IG5vdCByZWxhdGl2ZSB0byBpdHMgdGFyZ2V0
LCBzbyBvY2NsdXNpb24gc2hvdWxkIGhhcHBlbiBpbiBpdHMgdGFyZ2V0IHNwYWNlIG9ubHkuCisg
ICAgICAgIC8vIEl0IGFsc28gbWVhbnMgdGhhdCB0aGluZ3Mgb2NjbHVkaW5nIGluIHNjcmVlbiBz
cGFjZSAoZS5nLiBzdXJmYWNlMikgY2Fubm90IG9jY2x1ZGUgdGhpcyBsYXllci4KKyAgICAgICAg
RVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDMwMCksIG9jY2x1c2lvbi51bm9jY2x1
ZGVkQ29udGVudFJlY3Qoc3VyZmFjZUNoaWxkMiwgSW50UmVjdCgwLCAwLCAxMDAsIDMwMCkpKTsK
KyAgICAgICAgRVhQRUNUX0ZBTFNFKG9jY2x1c2lvbi5vY2NsdWRlZChzdXJmYWNlQ2hpbGQsIElu
dFJlY3QoMCwgMCwgNTAsIDMwMCkpKTsKKworICAgICAgICBvY2NsdXNpb24ubWFya09jY2x1ZGVk
QmVoaW5kTGF5ZXIoc3VyZmFjZUNoaWxkMik7CisgICAgICAgIEVYUEVDVF9GQUxTRShvY2NsdXNp
b24ub2NjbHVkZWQoc3VyZmFjZUNoaWxkLCBJbnRSZWN0KDAsIDAsIDEwMCwgMzAwKSkpOworICAg
ICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDUwLCAzMDApLCBvY2NsdXNpb24ub2Nj
bHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBv
Y2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAg
ICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCAxMDAsIDMwMCksIG9jY2x1c2lvbi5vY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwg
b2NjbHVzaW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAg
ICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgxMDAsIDAsIDIwMCwgMzAwKSwgb2NjbHVzaW9u
LnVub2NjbHVkZWRDb250ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkp
OworCisgICAgICAgIC8vIFRoZSBzdXJmYWNlIGNoaWxkIGlzIG9jY2x1ZGVkIGJ5IHRoZSBzdXJm
YWNlQ2hpbGQyLCBidXQgaXMgbW92aW5nIHJlbGF0aXZlIGl0cyB0YXJnZXQgYW5kIHRoZSBzY3Jl
ZW4sIHNvIGl0CisgICAgICAgIC8vIGNhbid0IGJlIG9jY2x1ZGVkLgorICAgICAgICBFWFBFQ1Rf
RVFfUkVDVChJbnRSZWN0KDAsIDAsIDIwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChzdXJmYWNlQ2hpbGQsIEludFJlY3QoMCwgMCwgMjAwLCAzMDApKSk7CisgICAgICAg
IEVYUEVDVF9GQUxTRShvY2NsdXNpb24ub2NjbHVkZWQoc3VyZmFjZUNoaWxkLCBJbnRSZWN0KDAs
IDAsIDUwLCAzMDApKSk7CisKKyAgICAgICAgb2NjbHVzaW9uLm1hcmtPY2NsdWRlZEJlaGluZExh
eWVyKHN1cmZhY2VDaGlsZCk7CisgICAgICAgIC8vIFRoZSBsYXllciBpcyBtb3ZpbmcgaW4gc2Ny
ZWVuIHNwYWNlIGJ1dCBub3QgcmVsYXRpdmUgdG8gaXRzIHRhcmdldCwgc28gb2NjbHVzaW9uIHNo
b3VsZCBoYXBwZW4gaW4gaXRzIHRhcmdldCBzcGFjZSBvbmx5LgorICAgICAgICBFWFBFQ1RfRVFf
UkVDVChJbnRSZWN0KDAsIDAsIDUwLCAzMDApLCBvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5T
cGFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNUX0VRKDF1LCBvY2NsdXNpb24ub2NjbHVz
aW9uSW5TY3JlZW5TcGFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VRX1JF
Q1QoSW50UmVjdCgwLCAwLCAxMDAsIDMwMCksIG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1
cmZhY2UoKS5ib3VuZHMoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxdSwgb2NjbHVzaW9uLm9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpLnJlY3RzKCkuc2l6ZSgpKTsKKyAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgxMDAsIDAsIDIwMCwgMzAwKSwgb2NjbHVzaW9uLnVub2NjbHVkZWRDb250
ZW50UmVjdChzdXJmYWNlLCBJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSkpOworCisgICAgICAgIG9j
Y2x1c2lvbi5tYXJrT2NjbHVkZWRCZWhpbmRMYXllcihzdXJmYWNlKTsKKyAgICAgICAgLy8gVGhl
IGxheWVyIGlzIG1vdmluZyBpbiBzY3JlZW4gc3BhY2UgYnV0IG5vdCByZWxhdGl2ZSB0byBpdHMg
dGFyZ2V0LCBzbyBvY2NsdXNpb24gc2hvdWxkIGhhcHBlbiBpbiBpdHMgdGFyZ2V0IHNwYWNlIG9u
bHkuCisgICAgICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMCwgMCwgNTAsIDMwMCksIG9jY2x1
c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkuYm91bmRzKCkpOworICAgICAgICBFWFBFQ1Rf
RVEoMXUsIG9jY2x1c2lvbi5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkucmVjdHMoKS5zaXplKCkp
OworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDMwMCwgMzAwKSwgb2NjbHVz
aW9uLm9jY2x1c2lvbkluVGFyZ2V0U3VyZmFjZSgpLmJvdW5kcygpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDF1LCBvY2NsdXNpb24ub2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKCkucmVjdHMoKS5zaXpl
KCkpOworICAgICAgICBFWFBFQ1RfRVFfUkVDVChJbnRSZWN0KDAsIDAsIDAsIDApLCBvY2NsdXNp
b24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHN1cmZhY2UsIEludFJlY3QoMCwgMCwgMzAwLCAzMDAp
KSk7CisKKyAgICAgICAgb2NjbHVzaW9uLmZpbmlzaGVkVGFyZ2V0UmVuZGVyU3VyZmFjZShzdXJm
YWNlLCBzdXJmYWNlLT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICBvY2NsdXNpb24ubGVhdmVU
b1RhcmdldFJlbmRlclN1cmZhY2UocGFyZW50LT5yZW5kZXJTdXJmYWNlKCkpOworICAgICAgICAv
LyBUaGUgc3VyZmFjZSBpcyBtb3ZpbmcgaW4gdGhlIHNjcmVlbiBhbmQgaW4gaXRzIHRhcmdldCwg
c28gYWxsIG9jY2x1c2lvbiBpcyBsb3N0IHdoZW4gbGVhdmluZyBpdC4KKyAgICAgICAgRVhQRUNU
X0VRX1JFQ1QoSW50UmVjdCg1MCwgMCwgMjUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENv
bnRlbnRSZWN0KHBhcmVudCwgSW50UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKworICAgICAgICBv
Y2NsdXNpb24ubWFya09jY2x1ZGVkQmVoaW5kTGF5ZXIobGF5ZXIpOworICAgICAgICAvLyBUaGUg
bGF5ZXIgaXMgYW5pbWF0aW5nIGluIHRoZSBzY3JlZW4gYW5kIGluIGl0cyB0YXJnZXQsIHNvIG5v
IG9jY2x1c2lvbiBpcyBhZGRlZC4KKyAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCg1MCwg
MCwgMjUwLCAzMDApLCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KHBhcmVudCwgSW50
UmVjdCgwLCAwLCAzMDAsIDMwMCkpKTsKKyAgICB9Cit9OworCitNQUlOX1RIUkVBRF9URVNUKEND
T2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25UcmFuc2xhdGVPbk1haW5UaHJlYWQpOworCiB9
IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>