<?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>37909</bug_id>
          
          <creation_ts>2010-04-20 22:59:29 -0700</creation_ts>
          <short_desc>Call sites of TextIterator constructor are difficult to read</short_desc>
          <delta_ts>2010-04-21 23:32:57 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinichiro Hamaji">hamaji</reporter>
          <assigned_to name="Shinichiro Hamaji">hamaji</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>215147</commentid>
    <comment_count>0</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-20 22:59:29 -0700</bug_when>
    <thetext>As suggested in Bug 36419, TextIterator and CharacterIterator are instantiated with confusing boolean parameters. Let&apos;s use enum version of their constructor and eliminate the old constructors.

I&apos;m planning to change the names of boolean members of these classes (e.g., m_emitCharactersBetweenAllVisiblePositions). They should be third person singular.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215151</commentid>
    <comment_count>1</comment_count>
      <attachid>53918</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-20 23:02:32 -0700</bug_when>
    <thetext>Created attachment 53918
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215159</commentid>
    <comment_count>2</comment_count>
      <attachid>53919</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-20 23:06:58 -0700</bug_when>
    <thetext>Created attachment 53919
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215160</commentid>
    <comment_count>3</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-20 23:08:17 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Created an attachment (id=53919) [details]
&gt; Patch v2

I just modified the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215362</commentid>
    <comment_count>4</comment_count>
      <attachid>53919</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-21 09:34:40 -0700</bug_when>
    <thetext>Comment on attachment 53919
Patch v2

&gt;  enum TextIteratorBehavior {
&gt;      TextIteratorBehaviorDefault = 0,
&gt; -    TextIteratorBehaviorEmitCharactersBetweenAllVisiblePositions = 1 &lt;&lt; 0,
&gt; -    TextIteratorBehaviorEnterTextControls = 1 &lt;&lt; 1,
&gt; +    TextIteratorBehaviorEmitsCharactersBetweenAllVisiblePositions = 1 &lt;&lt; 0,
&gt; +    TextIteratorBehaviorEntersTextControls = 1 &lt;&lt; 1,
&gt;      TextIteratorBehaviorEmitsTextsWithoutTranscoding = 1 &lt;&lt; 2,
&gt;  };

I think these repeat the word &quot;Behavior&quot; too much. I would call these:

    TextIteratorDefaultBehavior = 0,
    TextIteratorEmitsCharactersBetweenAllVisiblePositions = 1 &lt;&lt; 0,
    TextIteratorEntersTextControls = 1 &lt;&lt; 1,
    TextIteratorEmitsTextWithoutTranscoding = 1 &lt;&lt; 2,

r=me, whether or not you change the names</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215612</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-21 18:15:51 -0700</bug_when>
    <thetext>Attachment 53919 was posted by a committer and has review+, assigning to Shinichiro Hamaji for commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215727</commentid>
    <comment_count>6</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-04-21 23:32:57 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/58040

Thanks Darin for your review. I changed the name of enum values as you suggested.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53918</attachid>
            <date>2010-04-20 23:02:32 -0700</date>
            <delta_ts>2010-04-20 23:06:53 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-37909-20100420230230.patch</filename>
            <type>text/plain</type>
            <size>18291</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWQ2MDcxYi4uMWI5OGM2YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzNiBAQAogMjAxMC0wNC0yMCAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENhbGwgc2l0ZXMgb2YgVGV4dEl0ZXJhdG9yIGNvbnN0cnVj
dG9yIGFyZSBkaWZmaWN1bHQgdG8gcmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzc5MDkKKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkK
KworICAgICAgICAqIFdlYkNvcmUuYmFzZS5leHA6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3Ip
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjphZHZhbmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRJdGVyYXRvcjo6c2hvdWxkUmVwcmVzZW50Tm9kZU9mZnNldFplcm8pOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpzaG91bGRFbWl0U3BhY2VCZWZvcmVBbmRBZnRl
ck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpoYW5kbGVOb25UZXh0Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmV4aXROb2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6ZW1pdENoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkNoYXJhY3Rlckl0
ZXJhdG9yOjpDaGFyYWN0ZXJJdGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0
b3I6OnJhbmdlTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VG
cm9tTG9jYXRpb25BbmRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZFBsYWluVGV4dCk6
CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6
CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlZpc2libGVTZWxlY3Rpb246OmFwcGVuZFRyYWlsaW5nV2hpdGVzcGFjZSk6CisgICAgICAg
ICogZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5leHRCb3Vu
ZGFyeSk6CisKKzIwMTAtMDQtMjAgIFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVt
Lm9yZz4KKwogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlciBhbmQgQWxleGV5IFByb3Nr
dXJ5YWtvdi4KIAogICAgICAgICBBIGJhY2tzbGFzaCBpbiBFVUMtSlAgYmVjb21lcyB0byBhIHll
biBzaWduIHdoZW4gaXQgaXMgY29waWVkCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuYmFz
ZS5leHAgYi9XZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKaW5kZXggMTdiYzIwZC4uYTUzMDFlOSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS5iYXNlLmV4cApAQCAtMjYxLDcgKzI2MSw3IEBAIF9fWk43V2ViQ29yZTEyVGV4dEVuY29kaW5n
QzFFUktOU182U3RyaW5nRQogX19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IxMXJhbmdlTGVuZ3Ro
RVBLTlNfNVJhbmdlRWIKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yMjZyYW5nZUZyb21Mb2Nh
dGlvbkFuZExlbmd0aEVQTlNfN0VsZW1lbnRFaWliCiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRv
cjdhZHZhbmNlRXYKLV9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yQzFFUEtOU181UmFuZ2VFYmIK
K19fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yQzFFUEtOU181UmFuZ2VFTlNfMjBUZXh0SXRlcmF0
b3JCZWhhdmlvckUKIF9fWk43V2ViQ29yZTEyV29ya2VyVGhyZWFkMTd3b3JrZXJUaHJlYWRDb3Vu
dEV2CiBfX1pON1dlYkNvcmUxMmFwcGx5Q29tbWFuZEVOM1dURjEwUGFzc1JlZlB0cklOU18xMUVk
aXRDb21tYW5kRUVFCiBfX1pON1dlYkNvcmUxMmNhY2hlU3RvcmFnZUV2CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcCBiL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRl
cmF0b3IuY3BwCmluZGV4IGUwMjJlM2IuLmJkY2UxZDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRp
dGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwCkBAIC0yNTQsMjcgKzI1NCwxMiBAQCBUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcigpCiAg
ICAgLCBtX3RleHRDaGFyYWN0ZXJzKDApCiAgICAgLCBtX3RleHRMZW5ndGgoMCkKICAgICAsIG1f
bGFzdENoYXJhY3RlcigwKQotICAgICwgbV9lbWl0Q2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxl
UG9zaXRpb25zKGZhbHNlKQotICAgICwgbV9lbnRlclRleHRDb250cm9scyhmYWxzZSkKKyAgICAs
IG1fZW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMoZmFsc2UpCisgICAg
LCBtX2VudGVyc1RleHRDb250cm9scyhmYWxzZSkKICAgICAsIG1fZW1pdHNUZXh0V2l0aG91dFRy
YW5zY29kaW5nKGZhbHNlKQogewogfQogCi1UZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcihjb25z
dCBSYW5nZSogciwgYm9vbCBlbWl0Q2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25z
LCBib29sIGVudGVyVGV4dENvbnRyb2xzKQotICAgIDogbV9zdGFydENvbnRhaW5lcigwKSAKLSAg
ICAsIG1fc3RhcnRPZmZzZXQoMCkKLSAgICAsIG1fZW5kQ29udGFpbmVyKDApCi0gICAgLCBtX2Vu
ZE9mZnNldCgwKQotICAgICwgbV9wb3NpdGlvbk5vZGUoMCkKLSAgICAsIG1fdGV4dENoYXJhY3Rl
cnMoMCkKLSAgICAsIG1fdGV4dExlbmd0aCgwKQotICAgICwgbV9lbWl0Q2hhcmFjdGVyc0JldHdl
ZW5BbGxWaXNpYmxlUG9zaXRpb25zKGVtaXRDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3Np
dGlvbnMpCi0gICAgLCBtX2VudGVyVGV4dENvbnRyb2xzKGVudGVyVGV4dENvbnRyb2xzKQotICAg
ICwgbV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2RpbmcoZmFsc2UpCi17Ci0gICAgaW5pdChyKTsK
LX0KLQogVGV4dEl0ZXJhdG9yOjpUZXh0SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVy
YXRvckJlaGF2aW9yIGJlaGF2aW9yKQogICAgIDogbV9zdGFydENvbnRhaW5lcigwKQogICAgICwg
bV9zdGFydE9mZnNldCgwKQpAQCAtMjgzLDE1ICsyNjgsMTAgQEAgVGV4dEl0ZXJhdG9yOjpUZXh0
SXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIFRleHRJdGVyYXRvckJlaGF2aW9yIGJlaGF2aW9yKQog
ICAgICwgbV9wb3NpdGlvbk5vZGUoMCkKICAgICAsIG1fdGV4dENoYXJhY3RlcnMoMCkKICAgICAs
IG1fdGV4dExlbmd0aCgwKQotICAgICwgbV9lbWl0Q2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxl
UG9zaXRpb25zKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yQmVoYXZpb3JFbWl0Q2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKQotICAgICwgbV9lbnRlclRleHRDb250cm9scyhiZWhh
dmlvciAmIFRleHRJdGVyYXRvckJlaGF2aW9yRW50ZXJUZXh0Q29udHJvbHMpCisgICAgLCBtX2Vt
aXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKGJlaGF2aW9yICYgVGV4dEl0
ZXJhdG9yQmVoYXZpb3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykK
KyAgICAsIG1fZW50ZXJzVGV4dENvbnRyb2xzKGJlaGF2aW9yICYgVGV4dEl0ZXJhdG9yQmVoYXZp
b3JFbnRlcnNUZXh0Q29udHJvbHMpCiAgICAgLCBtX2VtaXRzVGV4dFdpdGhvdXRUcmFuc2NvZGlu
ZyhiZWhhdmlvciAmIFRleHRJdGVyYXRvckJlaGF2aW9yRW1pdHNUZXh0c1dpdGhvdXRUcmFuc2Nv
ZGluZykKIHsKLSAgICBpbml0KHIpOwotfQotCi12b2lkIFRleHRJdGVyYXRvcjo6aW5pdChjb25z
dCBSYW5nZSogcikKLXsKICAgICBpZiAoIXIpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzI2LDEx
ICszMDYsMTEgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmluaXQoY29uc3QgUmFuZ2UqIHIpCiAgICAg
bV9wYXN0RW5kTm9kZSA9IG5leHRJblByZU9yZGVyQ3Jvc3NpbmdTaGFkb3dCb3VuZGFyaWVzKGVu
ZENvbnRhaW5lciwgZW5kT2Zmc2V0KTsKIAogICAgIC8vIGluaXRpYWxpemUgbm9kZSBwcm9jZXNz
aW5nIHN0YXRlCi0gICAgbV9uZWVkQW5vdGhlck5ld2xpbmUgPSBmYWxzZTsKKyAgICBtX25lZWRz
QW5vdGhlck5ld2xpbmUgPSBmYWxzZTsKICAgICBtX3RleHRCb3ggPSAwOwogCiAgICAgLy8gaW5p
dGlhbGl6ZSByZWNvcmQgb2YgcHJldmlvdXMgbm9kZSBwcm9jZXNzaW5nCi0gICAgbV9oYXZlRW1p
dHRlZCA9IGZhbHNlOworICAgIG1faGFzRW1pdHRlZCA9IGZhbHNlOwogICAgIG1fbGFzdFRleHRO
b2RlID0gMDsKICAgICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENvbGxhcHNlZFNwYWNlID0gZmFs
c2U7CiAgICAgbV9sYXN0Q2hhcmFjdGVyID0gMDsKQEAgLTM1MSwxNiArMzMxLDE2IEBAIHZvaWQg
VGV4dEl0ZXJhdG9yOjphZHZhbmNlKCkKICAgICBtX3RleHRMZW5ndGggPSAwOwogCiAgICAgLy8g
aGFuZGxlIHJlbWVtYmVyZWQgbm9kZSB0aGF0IG5lZWRlZCBhIG5ld2xpbmUgYWZ0ZXIgdGhlIHRl
eHQgbm9kZSdzIG5ld2xpbmUKLSAgICBpZiAobV9uZWVkQW5vdGhlck5ld2xpbmUpIHsKKyAgICBp
ZiAobV9uZWVkc0Fub3RoZXJOZXdsaW5lKSB7CiAgICAgICAgIC8vIEVtaXQgdGhlIGV4dHJhIG5l
d2xpbmUsIGFuZCBwb3NpdGlvbiBpdCAqaW5zaWRlKiBtX25vZGUsIGFmdGVyIG1fbm9kZSdzIAog
ICAgICAgICAvLyBjb250ZW50cywgaW4gY2FzZSBpdCdzIGEgYmxvY2ssIGluIHRoZSBzYW1lIHdh
eSB0aGF0IHdlIHBvc2l0aW9uIHRoZSBmaXJzdCAKICAgICAgICAgLy8gbmV3bGluZS4gIFRoZSBy
YW5nZSBmb3IgdGhlIGVtaXR0ZWQgbmV3bGluZSBzaG91bGQgc3RhcnQgd2hlcmUgdGhlIGxpbmUg
CiAgICAgICAgIC8vIGJyZWFrIGJlZ2lucy4KICAgICAgICAgLy8gRklYTUU6IEl0IHdvdWxkIGJl
IGNsZWFuZXIgaWYgd2UgZW1pdHRlZCB0d28gbmV3bGluZXMgZHVyaW5nIHRoZSBsYXN0IAotICAg
ICAgICAvLyBpdGVyYXRpb24sIGluc3RlYWQgb2YgdXNpbmcgbV9uZWVkQW5vdGhlck5ld2xpbmUu
CisgICAgICAgIC8vIGl0ZXJhdGlvbiwgaW5zdGVhZCBvZiB1c2luZyBtX25lZWRzQW5vdGhlck5l
d2xpbmUuCiAgICAgICAgIE5vZGUqIGJhc2VOb2RlID0gbV9ub2RlLT5sYXN0Q2hpbGQoKSA/IG1f
bm9kZS0+bGFzdENoaWxkKCkgOiBtX25vZGU7CiAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJ1xuJywg
YmFzZU5vZGUtPnBhcmVudE5vZGUoKSwgYmFzZU5vZGUsIDEsIDEpOwotICAgICAgICBtX25lZWRB
bm90aGVyTmV3bGluZSA9IGZhbHNlOworICAgICAgICBtX25lZWRzQW5vdGhlck5ld2xpbmUgPSBm
YWxzZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNTg1LDcgKzU2NSw3IEBAIGJvb2wg
VGV4dEl0ZXJhdG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQoKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgaWYgKG1fZW50ZXJUZXh0Q29udHJvbHMgJiYgcmVuZGVyZXItPmlz
VGV4dENvbnRyb2woKSkgeworICAgIGlmIChtX2VudGVyc1RleHRDb250cm9scyAmJiByZW5kZXJl
ci0+aXNUZXh0Q29udHJvbCgpKSB7CiAgICAgICAgIGlmIChIVE1MRWxlbWVudCogaW5uZXJUZXh0
RWxlbWVudCA9IHRvUmVuZGVyVGV4dENvbnRyb2wocmVuZGVyZXIpLT5pbm5lclRleHRFbGVtZW50
KCkpIHsKICAgICAgICAgICAgIG1fbm9kZSA9IGlubmVyVGV4dEVsZW1lbnQtPnNoYWRvd1RyZWVS
b290Tm9kZSgpOwogICAgICAgICAgICAgcHVzaEZ1bGx5Q2xpcHBlZFN0YXRlKG1fZnVsbHlDbGlw
cGVkU3RhY2ssIG1fbm9kZSk7CkBAIC01OTQsOSArNTc0LDkgQEAgYm9vbCBUZXh0SXRlcmF0b3I6
OmhhbmRsZVJlcGxhY2VkRWxlbWVudCgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBtX2hhdmVF
bWl0dGVkID0gdHJ1ZTsKKyAgICBtX2hhc0VtaXR0ZWQgPSB0cnVlOwogCi0gICAgaWYgKG1fZW1p
dENoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykgeworICAgIGlmIChtX2VtaXRz
Q2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKSB7CiAgICAgICAgIC8vIFdlIHdh
bnQgcmVwbGFjZWQgZWxlbWVudHMgdG8gYmVoYXZlIGxpa2UgcHVuY3R1YXRpb24gZm9yIGJvdW5k
YXJ5IAogICAgICAgICAvLyBmaW5kaW5nLCBhbmQgdG8gc2ltcGx5IHRha2UgdXAgc3BhY2UgZm9y
IHRoZSBzZWxlY3Rpb24gcHJlc2VydmF0aW9uIAogICAgICAgICAvLyBjb2RlIGluIG1vdmVQYXJh
Z3JhcGhzLCBzbyB3ZSB1c2UgYSBjb21tYS4KQEAgLTc1OCw3ICs3MzgsNyBAQCBzdGF0aWMgaW50
IG1heE9mZnNldEluY2x1ZGluZ0NvbGxhcHNlZFNwYWNlcyhOb2RlKiBub2RlKQogLy8gV2hldGhl
ciBvciBub3Qgd2Ugc2hvdWxkIGVtaXQgYSBjaGFyYWN0ZXIgYXMgd2UgZW50ZXIgbV9ub2RlIChp
ZiBpdCdzIGEgY29udGFpbmVyKSBvciBhcyB3ZSBoaXQgaXQgKGlmIGl0J3MgYXRvbWljKS4KIGJv
b2wgVGV4dEl0ZXJhdG9yOjpzaG91bGRSZXByZXNlbnROb2RlT2Zmc2V0WmVybygpCiB7Ci0gICAg
aWYgKG1fZW1pdENoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyAmJiBtX25vZGUt
PnJlbmRlcmVyKCkgJiYgbV9ub2RlLT5yZW5kZXJlcigpLT5pc1RhYmxlKCkpCisgICAgaWYgKG1f
ZW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgJiYgbV9ub2RlLT5yZW5k
ZXJlcigpICYmIG1fbm9kZS0+cmVuZGVyZXIoKS0+aXNUYWJsZSgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAgICAgCiAgICAgLy8gTGVhdmUgZWxlbWVudCBwb3NpdGlvbmVkIGZsdXNoIHdp
dGggc3RhcnQgb2YgYSBwYXJhZ3JhcGgKQEAgLTc2Nyw3ICs3NDcsNyBAQCBib29sIFRleHRJdGVy
YXRvcjo6c2hvdWxkUmVwcmVzZW50Tm9kZU9mZnNldFplcm8oKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCiAgICAgLy8gT3RoZXJ3aXNlLCBzaG93IHRoZSBwb3NpdGlvbiBpZiB3ZSBoYXZl
IGVtaXR0ZWQgYW55IGNoYXJhY3RlcnMKLSAgICBpZiAobV9oYXZlRW1pdHRlZCkKKyAgICBpZiAo
bV9oYXNFbWl0dGVkKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKICAgICAvLyBXZSd2ZSBu
b3QgZW1pdHRlZCBhbnl0aGluZyB5ZXQuIEdlbmVyYWxseSwgdGhlcmUgaXMgbm8gbmVlZCBmb3Ig
YW55IHBvc2l0aW9uaW5nIHRoZW4uCkBAIC03ODksNyArNzY5LDcgQEAgYm9vbCBUZXh0SXRlcmF0
b3I6OnNob3VsZFJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKCkKIAogICAgIC8vIElmIHdlIHN0YXJ0
ZWQgYXMgbV9zdGFydENvbnRhaW5lciBvZmZzZXQgMCBhbmQgdGhlIGN1cnJlbnQgbm9kZSBpcyBh
IGRlc2NlbmRhbnQgb2YKICAgICAvLyB0aGUgc3RhcnQgY29udGFpbmVyLCB3ZSBhbHJlYWR5IGhh
ZCBlbm91Z2ggY29udGV4dCB0byBjb3JyZWN0bHkgZGVjaWRlIHdoZXRoZXIgdG8KLSAgICAvLyBl
bWl0IGFmdGVyIGEgcHJlY2VkaW5nIGJsb2NrLiBXZSBjaG9zZSBub3QgdG8gZW1pdCAobV9oYXZl
RW1pdHRlZCBpcyBmYWxzZSksCisgICAgLy8gZW1pdCBhZnRlciBhIHByZWNlZGluZyBibG9jay4g
V2UgY2hvc2Ugbm90IHRvIGVtaXQgKG1faGFzRW1pdHRlZCBpcyBmYWxzZSksCiAgICAgLy8gc28g
ZG9uJ3Qgc2Vjb25kIGd1ZXNzIHRoYXQgbm93LgogICAgIC8vIE5PVEU6IElzIHRoaXMgcmVhbGx5
IGNvcnJlY3Qgd2hlbiBtX25vZGUgaXMgbm90IGEgbGVmdG1vc3QgZGVzY2VuZGFudD8gUHJvYmFi
bHkKICAgICAvLyBpbW1hdGVyaWFsIHNpbmNlIHdlIGxpa2VseSB3b3VsZCBoYXZlIGFscmVhZHkg
ZW1pdHRlZCBzb21ldGhpbmcgYnkgbm93LgpAQCAtODEzLDcgKzc5Myw3IEBAIGJvb2wgVGV4dEl0
ZXJhdG9yOjpzaG91bGRSZXByZXNlbnROb2RlT2Zmc2V0WmVybygpCiAKIGJvb2wgVGV4dEl0ZXJh
dG9yOjpzaG91bGRFbWl0U3BhY2VCZWZvcmVBbmRBZnRlck5vZGUoTm9kZSogbm9kZSkKIHsKLSAg
ICByZXR1cm4gbm9kZS0+cmVuZGVyZXIoKSAmJiBub2RlLT5yZW5kZXJlcigpLT5pc1RhYmxlKCkg
JiYgKG5vZGUtPnJlbmRlcmVyKCktPmlzSW5saW5lKCkgfHwgbV9lbWl0Q2hhcmFjdGVyc0JldHdl
ZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKKyAgICByZXR1cm4gbm9kZS0+cmVuZGVyZXIoKSAmJiBu
b2RlLT5yZW5kZXJlcigpLT5pc1RhYmxlKCkgJiYgKG5vZGUtPnJlbmRlcmVyKCktPmlzSW5saW5l
KCkgfHwgbV9lbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CiB9CiAK
IHZvaWQgVGV4dEl0ZXJhdG9yOjpyZXByZXNlbnROb2RlT2Zmc2V0WmVybygpCkBAIC04NDAsNyAr
ODIwLDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OmhhbmRsZU5vblRleHROb2RlKCkKIHsKICAgICBp
ZiAoc2hvdWxkRW1pdE5ld2xpbmVGb3JOb2RlKG1fbm9kZSkpCiAgICAgICAgIGVtaXRDaGFyYWN0
ZXIoJ1xuJywgbV9ub2RlLT5wYXJlbnROb2RlKCksIG1fbm9kZSwgMCwgMSk7Ci0gICAgZWxzZSBp
ZiAobV9lbWl0Q2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zICYmIG1fbm9kZS0+
cmVuZGVyZXIoKSAmJiBtX25vZGUtPnJlbmRlcmVyKCktPmlzSFIoKSkKKyAgICBlbHNlIGlmICht
X2VtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zICYmIG1fbm9kZS0+cmVu
ZGVyZXIoKSAmJiBtX25vZGUtPnJlbmRlcmVyKCktPmlzSFIoKSkKICAgICAgICAgZW1pdENoYXJh
Y3RlcignICcsIG1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUsIDAsIDEpOwogICAgIGVsc2UK
ICAgICAgICAgcmVwcmVzZW50Tm9kZU9mZnNldFplcm8oKTsKQEAgLTg1MSwxMCArODMxLDEwIEBA
IGJvb2wgVGV4dEl0ZXJhdG9yOjpoYW5kbGVOb25UZXh0Tm9kZSgpCiB2b2lkIFRleHRJdGVyYXRv
cjo6ZXhpdE5vZGUoKQogewogICAgIC8vIHByZXZlbnQgZW1pdHRpbmcgYSBuZXdsaW5lIHdoZW4g
ZXhpdGluZyBhIGNvbGxhcHNlZCBibG9jayBhdCBiZWdpbm5pbmcgb2YgdGhlIHJhbmdlCi0gICAg
Ly8gRklYTUU6ICFtX2hhdmVFbWl0dGVkIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gdGhlcmUg
d2FzIGEgY29sbGFwc2VkIGJsb2NrLi4uIGl0IGNvdWxkCisgICAgLy8gRklYTUU6ICFtX2hhc0Vt
aXR0ZWQgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGVyZSB3YXMgYSBjb2xsYXBzZWQgYmxv
Y2suLi4gaXQgY291bGQKICAgICAvLyBoYXZlIGJlZW4gYW4gaHIgKGUuZy4pLiBBbHNvLCBhIGNv
bGxhcHNlZCBibG9jayBjb3VsZCBoYXZlIGhlaWdodCAoZS5nLiBhIHRhYmxlKSBhbmQKICAgICAv
LyB0aGVyZWZvcmUgbG9vayBsaWtlIGEgYmxhbmsgbGluZS4KLSAgICBpZiAoIW1faGF2ZUVtaXR0
ZWQpCisgICAgaWYgKCFtX2hhc0VtaXR0ZWQpCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAg
ICAgLy8gRW1pdCB3aXRoIGEgcG9zaXRpb24gKmluc2lkZSogbV9ub2RlLCBhZnRlciBtX25vZGUn
cyBjb250ZW50cywgaW4gCkBAIC04NzUsOCArODU1LDggQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmV4
aXROb2RlKCkKICAgICAgICAgICAgIC8vIGluc2VydCBhIG5ld2xpbmUgd2l0aCBhIHBvc2l0aW9u
IGZvbGxvd2luZyB0aGlzIGJsb2NrJ3MgY29udGVudHMuCiAgICAgICAgICAgICBlbWl0Q2hhcmFj
dGVyKCdcbicsIGJhc2VOb2RlLT5wYXJlbnROb2RlKCksIGJhc2VOb2RlLCAxLCAxKTsKICAgICAg
ICAgICAgIC8vIHJlbWVtYmVyIHdoZXRoZXIgdG8gbGF0ZXIgYWRkIGEgbmV3bGluZSBmb3IgdGhl
IGN1cnJlbnQgbm9kZQotICAgICAgICAgICAgQVNTRVJUKCFtX25lZWRBbm90aGVyTmV3bGluZSk7
Ci0gICAgICAgICAgICBtX25lZWRBbm90aGVyTmV3bGluZSA9IGFkZE5ld2xpbmU7CisgICAgICAg
ICAgICBBU1NFUlQoIW1fbmVlZHNBbm90aGVyTmV3bGluZSk7CisgICAgICAgICAgICBtX25lZWRz
QW5vdGhlck5ld2xpbmUgPSBhZGROZXdsaW5lOwogICAgICAgICB9IGVsc2UgaWYgKGFkZE5ld2xp
bmUpCiAgICAgICAgICAgICAvLyBpbnNlcnQgYSBuZXdsaW5lIHdpdGggYSBwb3NpdGlvbiBmb2xs
b3dpbmcgdGhpcyBibG9jaydzIGNvbnRlbnRzLgogICAgICAgICAgICAgZW1pdENoYXJhY3Rlcign
XG4nLCBiYXNlTm9kZS0+cGFyZW50Tm9kZSgpLCBiYXNlTm9kZSwgMSwgMSk7CkBAIC04ODksNyAr
ODY5LDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmV4aXROb2RlKCkKIAogdm9pZCBUZXh0SXRlcmF0
b3I6OmVtaXRDaGFyYWN0ZXIoVUNoYXIgYywgTm9kZSogdGV4dE5vZGUsIE5vZGUqIG9mZnNldEJh
c2VOb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnNldCkKIHsKLSAgICBt
X2hhdmVFbWl0dGVkID0gdHJ1ZTsKKyAgICBtX2hhc0VtaXR0ZWQgPSB0cnVlOwogICAgIAogICAg
IC8vIHJlbWVtYmVyIGluZm9ybWF0aW9uIHdpdGggd2hpY2ggdG8gY29uc3RydWN0IHRoZSBUZXh0
SXRlcmF0b3I6OnJhbmdlKCkKICAgICAvLyBOT1RFOiB0ZXh0Tm9kZSBpcyBvZnRlbiBub3QgYSB0
ZXh0IG5vZGUsIHNvIHRoZSByYW5nZSB3aWxsIHNwZWNpZnkgY2hpbGQgbm9kZXMgb2YgcG9zaXRp
b25Ob2RlCkBAIC05MjMsNyArOTAzLDcgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmVtaXRUZXh0KE5v
ZGUqIHRleHROb2RlLCBpbnQgdGV4dFN0YXJ0T2Zmc2V0LCBpbnQgdGV4dEVuZE9mZnMKICAgICBt
X2xhc3RDaGFyYWN0ZXIgPSBzdHJbdGV4dEVuZE9mZnNldCAtIDFdOwogCiAgICAgbV9sYXN0VGV4
dE5vZGVFbmRlZFdpdGhDb2xsYXBzZWRTcGFjZSA9IGZhbHNlOwotICAgIG1faGF2ZUVtaXR0ZWQg
PSB0cnVlOworICAgIG1faGFzRW1pdHRlZCA9IHRydWU7CiB9CiAKIFBhc3NSZWZQdHI8UmFuZ2U+
IFRleHRJdGVyYXRvcjo6cmFuZ2UoKSBjb25zdApAQCAtMTE3NCwxMSArMTE1NCwxMSBAQCBDaGFy
YWN0ZXJJdGVyYXRvcjo6Q2hhcmFjdGVySXRlcmF0b3IoKQogewogfQogCi1DaGFyYWN0ZXJJdGVy
YXRvcjo6Q2hhcmFjdGVySXRlcmF0b3IoY29uc3QgUmFuZ2UqIHIsIGJvb2wgZW1pdENoYXJhY3Rl
cnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucywgYm9vbCBlbnRlclRleHRDb250cm9scykKK0No
YXJhY3Rlckl0ZXJhdG9yOjpDaGFyYWN0ZXJJdGVyYXRvcihjb25zdCBSYW5nZSogciwgVGV4dEl0
ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiAgICAgOiBtX29mZnNldCgwKQogICAgICwgbV9ydW5P
ZmZzZXQoMCkKICAgICAsIG1fYXRCcmVhayh0cnVlKQotICAgICwgbV90ZXh0SXRlcmF0b3Iociwg
ZW1pdENoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucywgZW50ZXJUZXh0Q29udHJv
bHMpCisgICAgLCBtX3RleHRJdGVyYXRvcihyLCBiZWhhdmlvcikKIHsKICAgICB3aGlsZSAoIWF0
RW5kKCkgJiYgbV90ZXh0SXRlcmF0b3IubGVuZ3RoKCkgPT0gMCkKICAgICAgICAgbV90ZXh0SXRl
cmF0b3IuYWR2YW5jZSgpOwpAQCAtMjAxMyw3ICsxOTkzLDcgQEAgc2l6ZV90IFNlYXJjaEJ1ZmZl
cjo6bGVuZ3RoKCkgY29uc3QKIGludCBUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKGNvbnN0IFJh
bmdlKiByLCBib29sIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbikKIHsKICAgICBpbnQgbGVuZ3Ro
ID0gMDsKLSAgICBmb3IgKFRleHRJdGVyYXRvciBpdChyLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRp
b24pOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKQorICAgIGZvciAoVGV4dEl0ZXJhdG9yIGl0
KHIsIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRvckJlaGF2aW9yRW1pdHND
aGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JCZWhhdmlv
ckRlZmF1bHQpOyAhaXQuYXRFbmQoKTsgaXQuYWR2YW5jZSgpKQogICAgICAgICBsZW5ndGggKz0g
aXQubGVuZ3RoKCk7CiAgICAgCiAgICAgcmV0dXJuIGxlbmd0aDsKQEAgLTIwMzUsNyArMjAxNSw3
IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRM
ZW5ndGgoRWxlbWVudCogc2NvcGUsIGludCByCiAKICAgICBSZWZQdHI8UmFuZ2U+IHRleHRSdW5S
YW5nZTsKIAotICAgIFRleHRJdGVyYXRvciBpdChyYW5nZU9mQ29udGVudHMoc2NvcGUpLmdldCgp
LCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24pOworICAgIFRleHRJdGVyYXRvciBpdChyYW5nZU9m
Q29udGVudHMoc2NvcGUpLmdldCgpLCBmb3JTZWxlY3Rpb25QcmVzZXJ2YXRpb24gPyBUZXh0SXRl
cmF0b3JCZWhhdmlvckVtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zIDog
VGV4dEl0ZXJhdG9yQmVoYXZpb3JEZWZhdWx0KTsKICAgICAKICAgICAvLyBGSVhNRTogdGhlIGF0
RW5kKCkgY2hlY2sgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwgd29ya2Fyb3VuZCBmb3IgPGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyODk+LgogICAgIGlmIChyYW5nZUxv
Y2F0aW9uID09IDAgJiYgcmFuZ2VMZW5ndGggPT0gMCAmJiBpdC5hdEVuZCgpKSB7CkBAIC0yMjU4
LDE0ICsyMjM4LDE0IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IGZpbmRQbGFpblRleHQoY29uc3QgUmFu
Z2UqIHJhbmdlLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgYm9vbCBmCiAgICAgc2l6ZV90IG1hdGNo
U3RhcnQ7CiAgICAgc2l6ZV90IG1hdGNoTGVuZ3RoOwogICAgIHsKLSAgICAgICAgQ2hhcmFjdGVy
SXRlcmF0b3IgZmluZEl0ZXJhdG9yKHJhbmdlLCBmYWxzZSwgdHJ1ZSk7CisgICAgICAgIENoYXJh
Y3Rlckl0ZXJhdG9yIGZpbmRJdGVyYXRvcihyYW5nZSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3JFbnRl
cnNUZXh0Q29udHJvbHMpOwogICAgICAgICBtYXRjaExlbmd0aCA9IGZpbmRQbGFpblRleHQoZmlu
ZEl0ZXJhdG9yLCB0YXJnZXQsIGZvcndhcmQsIGNhc2VTZW5zaXRpdmUsIG1hdGNoU3RhcnQpOwog
ICAgICAgICBpZiAoIW1hdGNoTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIGNvbGxhcHNlZFRv
Qm91bmRhcnkocmFuZ2UsIGZvcndhcmQpOwogICAgIH0KIAogICAgIC8vIFRoZW4sIGZpbmQgdGhl
IGRvY3VtZW50IHBvc2l0aW9uIG9mIHRoZSBzdGFydCBhbmQgdGhlIGVuZCBvZiB0aGUgdGV4dC4K
LSAgICBDaGFyYWN0ZXJJdGVyYXRvciBjb21wdXRlUmFuZ2VJdGVyYXRvcihyYW5nZSwgZmFsc2Us
IHRydWUpOworICAgIENoYXJhY3Rlckl0ZXJhdG9yIGNvbXB1dGVSYW5nZUl0ZXJhdG9yKHJhbmdl
LCBUZXh0SXRlcmF0b3JCZWhhdmlvckVudGVyc1RleHRDb250cm9scyk7CiAgICAgcmV0dXJuIGNo
YXJhY3RlclN1YnJhbmdlKGNvbXB1dGVSYW5nZUl0ZXJhdG9yLCBtYXRjaFN0YXJ0LCBtYXRjaExl
bmd0aCk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaCBi
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAppbmRleCBhYmQ4MTYxLi40NjIwODI3IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmgKKysrIGIvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5oCkBAIC03MCwxNiArNzAsMTUgQEAgcHJpdmF0ZToKIAogZW51
bSBUZXh0SXRlcmF0b3JCZWhhdmlvciB7CiAgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3JEZWZhdWx0
ID0gMCwKLSAgICBUZXh0SXRlcmF0b3JCZWhhdmlvckVtaXRDaGFyYWN0ZXJzQmV0d2VlbkFsbFZp
c2libGVQb3NpdGlvbnMgPSAxIDw8IDAsCi0gICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3JFbnRlclRl
eHRDb250cm9scyA9IDEgPDwgMSwKKyAgICBUZXh0SXRlcmF0b3JCZWhhdmlvckVtaXRzQ2hhcmFj
dGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zID0gMSA8PCAwLAorICAgIFRleHRJdGVyYXRv
ckJlaGF2aW9yRW50ZXJzVGV4dENvbnRyb2xzID0gMSA8PCAxLAogICAgIFRleHRJdGVyYXRvckJl
aGF2aW9yRW1pdHNUZXh0c1dpdGhvdXRUcmFuc2NvZGluZyA9IDEgPDwgMiwKIH07CiAKIGNsYXNz
IFRleHRJdGVyYXRvciB7CiBwdWJsaWM6CiAgICAgVGV4dEl0ZXJhdG9yKCk7Ci0gICAgZXhwbGlj
aXQgVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiwgYm9vbCBlbWl0Q2hhcmFjdGVyc0JldHdlZW5B
bGxWaXNpYmxlUG9zaXRpb25zID0gZmFsc2UsIGJvb2wgZW50ZXJUZXh0Q29udHJvbHMgPSBmYWxz
ZSk7Ci0gICAgVGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3Ip
OworICAgIGV4cGxpY2l0IFRleHRJdGVyYXRvcihjb25zdCBSYW5nZSosIFRleHRJdGVyYXRvckJl
aGF2aW9yID0gVGV4dEl0ZXJhdG9yQmVoYXZpb3JEZWZhdWx0KTsKIAogICAgIGJvb2wgYXRFbmQo
KSBjb25zdCB7IHJldHVybiAhbV9wb3NpdGlvbk5vZGU7IH0KICAgICB2b2lkIGFkdmFuY2UoKTsK
QEAgLTk1LDcgKzk0LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJhbmdlPiBz
dWJyYW5nZShSYW5nZSogZW50aXJlUmFuZ2UsIGludCBjaGFyYWN0ZXJPZmZzZXQsIGludCBjaGFy
YWN0ZXJDb3VudCk7CiAgICAgCiBwcml2YXRlOgotICAgIHZvaWQgaW5pdChjb25zdCBSYW5nZSop
OwogICAgIHZvaWQgZXhpdE5vZGUoKTsKICAgICBib29sIHNob3VsZFJlcHJlc2VudE5vZGVPZmZz
ZXRaZXJvKCk7CiAgICAgYm9vbCBzaG91bGRFbWl0U3BhY2VCZWZvcmVBbmRBZnRlck5vZGUoTm9k
ZSopOwpAQCAtMTMyLDcgKzEzMCw3IEBAIHByaXZhdGU6CiAgICAgCiAgICAgLy8gVXNlZCB3aGVu
IHRoZXJlIGlzIHN0aWxsIHNvbWUgcGVuZGluZyB0ZXh0IGZyb20gdGhlIGN1cnJlbnQgbm9kZTsg
d2hlbiB0aGVzZQogICAgIC8vIGFyZSBmYWxzZSBhbmQgMCwgd2UgZ28gYmFjayB0byBub3JtYWwg
aXRlcmF0aW5nLgotICAgIGJvb2wgbV9uZWVkQW5vdGhlck5ld2xpbmU7CisgICAgYm9vbCBtX25l
ZWRzQW5vdGhlck5ld2xpbmU7CiAgICAgSW5saW5lVGV4dEJveCogbV90ZXh0Qm94OwogICAgIAog
ICAgIC8vIFVzZWQgdG8gZG8gdGhlIHdoaXRlc3BhY2UgY29sbGFwc2luZyBsb2dpYy4KQEAgLTE0
OCwxNCArMTQ2LDE0IEBAIHByaXZhdGU6CiAgICAgc2l6ZV90IG1fc29ydGVkVGV4dEJveGVzUG9z
aXRpb247CiAgICAgCiAgICAgLy8gVXNlZCB3aGVuIGRlY2lkaW5nIHdoZXRoZXIgdG8gZW1pdCBh
ICJwb3NpdGlvbmluZyIgKGUuZy4gbmV3bGluZSkgYmVmb3JlIGFueSBvdGhlciBjb250ZW50Ci0g
ICAgYm9vbCBtX2hhdmVFbWl0dGVkOworICAgIGJvb2wgbV9oYXNFbWl0dGVkOwogICAgIAogICAg
IC8vIFVzZWQgYnkgc2VsZWN0aW9uIHByZXNlcnZhdGlvbiBjb2RlLiAgVGhlcmUgc2hvdWxkIGJl
IG9uZSBjaGFyYWN0ZXIgZW1pdHRlZCBiZXR3ZWVuIGV2ZXJ5IFZpc2libGVQb3NpdGlvbgogICAg
IC8vIGluIHRoZSBSYW5nZSB1c2VkIHRvIGNyZWF0ZSB0aGUgVGV4dEl0ZXJhdG9yLgogICAgIC8v
IEZJWE1FIDxyZGFyOi8vcHJvYmxlbS82MDI4ODE4PjogVGhpcyBmdW5jdGlvbmFsaXR5IHNob3Vs
ZCBldmVudHVhbGx5IGJlIHBoYXNlZCBvdXQgd2hlbiB3ZSByZXdyaXRlIAogICAgIC8vIG1vdmVQ
YXJhZ3JhcGhzIHRvIG5vdCBjbG9uZS9kZXN0cm95IG1vdmVkIGNvbnRlbnQuCi0gICAgYm9vbCBt
X2VtaXRDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnM7Ci0gICAgYm9vbCBtX2Vu
dGVyVGV4dENvbnRyb2xzOworICAgIGJvb2wgbV9lbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlz
aWJsZVBvc2l0aW9uczsKKyAgICBib29sIG1fZW50ZXJzVGV4dENvbnRyb2xzOwogCiAgICAgLy8g
VXNlZCB3aGVuIHdlIHdhbnQgdGV4dHMgZm9yIGNvcHlpbmcsIHBhc3RpbmcsIGFuZCB0cmFuc3Bv
c2luZy4KICAgICBib29sIG1fZW1pdHNUZXh0V2l0aG91dFRyYW5zY29kaW5nOwpAQCAtMjIyLDcg
KzIyMCw3IEBAIHByaXZhdGU6CiBjbGFzcyBDaGFyYWN0ZXJJdGVyYXRvciB7CiBwdWJsaWM6CiAg
ICAgQ2hhcmFjdGVySXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBDaGFyYWN0ZXJJdGVyYXRvcihj
b25zdCBSYW5nZSosIGJvb2wgZW1pdENoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9u
cyA9IGZhbHNlLCBib29sIGVudGVyVGV4dENvbnRyb2xzID0gZmFsc2UpOworICAgIGV4cGxpY2l0
IENoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBU
ZXh0SXRlcmF0b3JCZWhhdmlvckRlZmF1bHQpOwogICAgIAogICAgIHZvaWQgYWR2YW5jZShpbnQg
bnVtQ2hhcmFjdGVycyk7CiAgICAgCmRpZmYgLS1naXQgYS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJs
ZVNlbGVjdGlvbi5jcHAgYi9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKaW5k
ZXggNjc4NDYzMS4uN2VkZDFkOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVT
ZWxlY3Rpb24uY3BwCisrKyBiL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcApA
QCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgVmlzaWJsZVNlbGVjdGlvbjo6YXBwZW5kVHJhaWxpbmdX
aGl0ZXNwYWNlKCkKICAgICBpZiAoIXNlYXJjaFJhbmdlKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFySXQoc2VhcmNoUmFuZ2UuZ2V0KCksIHRydWUpOworICAg
IENoYXJhY3Rlckl0ZXJhdG9yIGNoYXJJdChzZWFyY2hSYW5nZS5nZXQoKSwgVGV4dEl0ZXJhdG9y
QmVoYXZpb3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CiAKICAg
ICBmb3IgKDsgY2hhckl0Lmxlbmd0aCgpOyBjaGFySXQuYWR2YW5jZSgxKSkgewogICAgICAgICBV
Q2hhciBjID0gY2hhckl0LmNoYXJhY3RlcnMoKVswXTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRp
dGluZy92aXNpYmxlX3VuaXRzLmNwcCBiL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNw
cAppbmRleCAzZDg1YWQxLi43Zjc1MTJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvdmlz
aWJsZV91bml0cy5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCkBA
IC0yMDcsNyArMjA3LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnkoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmMKIAogICAgIHNlYXJjaFJh
bmdlLT5zZWxlY3ROb2RlQ29udGVudHMoYm91bmRhcnksIGVjKTsKICAgICBzZWFyY2hSYW5nZS0+
c2V0U3RhcnQoc3RhcnQubm9kZSgpLCBzdGFydC5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpLCBl
Yyk7Ci0gICAgVGV4dEl0ZXJhdG9yIGl0KHNlYXJjaFJhbmdlLmdldCgpLCB0cnVlKTsKKyAgICBU
ZXh0SXRlcmF0b3IgaXQoc2VhcmNoUmFuZ2UuZ2V0KCksIFRleHRJdGVyYXRvckJlaGF2aW9yRW1p
dHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMpOwogICAgIHVuc2lnbmVkIG5l
eHQgPSAwOwogICAgIGJvb2wgaW5UZXh0U2VjdXJpdHlNb2RlID0gc3RhcnQubm9kZSgpICYmIHN0
YXJ0Lm5vZGUoKS0+cmVuZGVyZXIoKSAmJiBzdGFydC5ub2RlKCktPnJlbmRlcmVyKCktPnN0eWxl
KCktPnRleHRTZWN1cml0eSgpICE9IFRTTk9ORTsKICAgICBib29sIG5lZWRNb3JlQ29udGV4dCA9
IGZhbHNlOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gbmV4dEJv
dW5kYXJ5KGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgQm91bmRhcnlTZWFyY2hGdW5jCiAgICAg
ICAgIHBvcyA9IGl0LnJhbmdlKCktPnN0YXJ0UG9zaXRpb24oKTsKICAgICB9IGVsc2UgaWYgKG5l
eHQgIT0gcHJlZml4TGVuZ3RoKSB7CiAgICAgICAgIC8vIFVzZSB0aGUgY2hhcmFjdGVyIGl0ZXJh
dG9yIHRvIHRyYW5zbGF0ZSB0aGUgbmV4dCB2YWx1ZSBpbnRvIGEgRE9NIHBvc2l0aW9uLgotICAg
ICAgICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFySXQoc2VhcmNoUmFuZ2UuZ2V0KCksIHRydWUpOwor
ICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFySXQoc2VhcmNoUmFuZ2UuZ2V0KCksIFRleHRJ
dGVyYXRvckJlaGF2aW9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMp
OwogICAgICAgICBjaGFySXQuYWR2YW5jZShuZXh0IC0gcHJlZml4TGVuZ3RoIC0gMSk7CiAgICAg
ICAgIHBvcyA9IGNoYXJJdC5yYW5nZSgpLT5lbmRQb3NpdGlvbigpOwogICAgICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53919</attachid>
            <date>2010-04-20 23:06:58 -0700</date>
            <delta_ts>2010-04-21 09:34:40 -0700</delta_ts>
            <desc>Patch v2</desc>
            <filename>bug-37909-20100420230656.patch</filename>
            <type>text/plain</type>
            <size>18560</size>
            <attacher name="Shinichiro Hamaji">hamaji</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OWQ2MDcxYi4uNTNiMTYzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0MiBAQAogMjAxMC0wNC0yMCAgU2hpbmljaGlybyBI
YW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENhbGwgc2l0ZXMgb2YgVGV4dEl0ZXJhdG9yIGNvbnN0cnVj
dG9yIGFyZSBkaWZmaWN1bHQgdG8gcmVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzc5MDkKKworICAgICAgICBOb3cgd2UgdXNlIGVudW0gcGFyYW1l
dGVycyBpbnN0ZWFkIG9mIGJvb2xlYW4gcGFyYW1ldGVycyBhbmQKKyAgICAgICAgYm9vbGVhbiB2
ZXJzaW9uIG9mIGNvbnN0cnVjdG9ycyBhcmUgZWxpbWluYXRlZC4KKworICAgICAgICBUaGlzIGNo
YW5nZSBhbHNvIGNoYW5nZXMgdGhlIG5hbWVzIG9mIGJvb2xlYW4gbWVtYmVycyBzbyB0aGV5IGFy
ZQorICAgICAgICBub3cgdGhpcmQgcGVyc29uIHNpbmd1bGFyLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cyBiZWNhdXNlIHRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nLgorCisgICAgICAgICogV2Vi
Q29yZS5iYXNlLmV4cDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0SXRlcmF0b3I6OmFkdmFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJh
dG9yOjpoYW5kbGVSZXBsYWNlZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJh
dG9yOjpzaG91bGRSZXByZXNlbnROb2RlT2Zmc2V0WmVybyk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0SXRlcmF0b3I6OnNob3VsZEVtaXRTcGFjZUJlZm9yZUFuZEFmdGVyTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0SXRlcmF0b3I6OmhhbmRsZU5vblRleHROb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRJdGVyYXRvcjo6ZXhpdE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0
ZXJhdG9yOjplbWl0Q2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6
ZW1pdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhcmFjdGVySXRlcmF0b3I6OkNoYXJhY3Rl
ckl0ZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExl
bmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpmaW5kUGxhaW5UZXh0KToKKyAgICAgICAgKiBlZGl0
aW5nL1RleHRJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKiBlZGl0
aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbjo6YXBwZW5kVHJhaWxpbmdXaGl0ZXNwYWNlKToKKyAgICAgICAgKiBlZGl0aW5nL3Zpc2li
bGVfdW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmV4dEJvdW5kYXJ5KToKKworMjAxMC0w
NC0yMCAgU2hpbmljaGlybyBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgorCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyIGFuZCBBbGV4ZXkgUHJvc2t1cnlha292LgogCiAgICAg
ICAgIEEgYmFja3NsYXNoIGluIEVVQy1KUCBiZWNvbWVzIHRvIGEgeWVuIHNpZ24gd2hlbiBpdCBp
cyBjb3BpZWQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cCBiL1dlYkNvcmUv
V2ViQ29yZS5iYXNlLmV4cAppbmRleCAxN2JjMjBkLi5hNTMwMWU5IDEwMDY0NAotLS0gYS9XZWJD
b3JlL1dlYkNvcmUuYmFzZS5leHAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCkBAIC0y
NjEsNyArMjYxLDcgQEAgX19aTjdXZWJDb3JlMTJUZXh0RW5jb2RpbmdDMUVSS05TXzZTdHJpbmdF
CiBfX1pON1dlYkNvcmUxMlRleHRJdGVyYXRvcjExcmFuZ2VMZW5ndGhFUEtOU181UmFuZ2VFYgog
X19aTjdXZWJDb3JlMTJUZXh0SXRlcmF0b3IyNnJhbmdlRnJvbUxvY2F0aW9uQW5kTGVuZ3RoRVBO
U183RWxlbWVudEVpaWIKIF9fWk43V2ViQ29yZTEyVGV4dEl0ZXJhdG9yN2FkdmFuY2VFdgotX19a
TjdXZWJDb3JlMTJUZXh0SXRlcmF0b3JDMUVQS05TXzVSYW5nZUViYgorX19aTjdXZWJDb3JlMTJU
ZXh0SXRlcmF0b3JDMUVQS05TXzVSYW5nZUVOU18yMFRleHRJdGVyYXRvckJlaGF2aW9yRQogX19a
TjdXZWJDb3JlMTJXb3JrZXJUaHJlYWQxN3dvcmtlclRocmVhZENvdW50RXYKIF9fWk43V2ViQ29y
ZTEyYXBwbHlDb21tYW5kRU4zV1RGMTBQYXNzUmVmUHRySU5TXzExRWRpdENvbW1hbmRFRUUKIF9f
Wk43V2ViQ29yZTEyY2FjaGVTdG9yYWdlRXYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9U
ZXh0SXRlcmF0b3IuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXgg
ZTAyMmUzYi4uYmRjZTFkOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRv
ci5jcHAKKysrIGIvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTI1NCwyNyAr
MjU0LDEyIEBAIFRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKCkKICAgICAsIG1fdGV4dENoYXJh
Y3RlcnMoMCkKICAgICAsIG1fdGV4dExlbmd0aCgwKQogICAgICwgbV9sYXN0Q2hhcmFjdGVyKDAp
Ci0gICAgLCBtX2VtaXRDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMoZmFsc2Up
Ci0gICAgLCBtX2VudGVyVGV4dENvbnRyb2xzKGZhbHNlKQorICAgICwgbV9lbWl0c0NoYXJhY3Rl
cnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyhmYWxzZSkKKyAgICAsIG1fZW50ZXJzVGV4dENv
bnRyb2xzKGZhbHNlKQogICAgICwgbV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2RpbmcoZmFsc2Up
CiB7CiB9CiAKLVRleHRJdGVyYXRvcjo6VGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiByLCBib29s
IGVtaXRDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMsIGJvb2wgZW50ZXJUZXh0
Q29udHJvbHMpCi0gICAgOiBtX3N0YXJ0Q29udGFpbmVyKDApIAotICAgICwgbV9zdGFydE9mZnNl
dCgwKQotICAgICwgbV9lbmRDb250YWluZXIoMCkKLSAgICAsIG1fZW5kT2Zmc2V0KDApCi0gICAg
LCBtX3Bvc2l0aW9uTm9kZSgwKQotICAgICwgbV90ZXh0Q2hhcmFjdGVycygwKQotICAgICwgbV90
ZXh0TGVuZ3RoKDApCi0gICAgLCBtX2VtaXRDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3Np
dGlvbnMoZW1pdENoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucykKLSAgICAsIG1f
ZW50ZXJUZXh0Q29udHJvbHMoZW50ZXJUZXh0Q29udHJvbHMpCi0gICAgLCBtX2VtaXRzVGV4dFdp
dGhvdXRUcmFuc2NvZGluZyhmYWxzZSkKLXsKLSAgICBpbml0KHIpOwotfQotCiBUZXh0SXRlcmF0
b3I6OlRleHRJdGVyYXRvcihjb25zdCBSYW5nZSogciwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVo
YXZpb3IpCiAgICAgOiBtX3N0YXJ0Q29udGFpbmVyKDApCiAgICAgLCBtX3N0YXJ0T2Zmc2V0KDAp
CkBAIC0yODMsMTUgKzI2OCwxMCBAQCBUZXh0SXRlcmF0b3I6OlRleHRJdGVyYXRvcihjb25zdCBS
YW5nZSogciwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgYmVoYXZpb3IpCiAgICAgLCBtX3Bvc2l0aW9u
Tm9kZSgwKQogICAgICwgbV90ZXh0Q2hhcmFjdGVycygwKQogICAgICwgbV90ZXh0TGVuZ3RoKDAp
Ci0gICAgLCBtX2VtaXRDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMoYmVoYXZp
b3IgJiBUZXh0SXRlcmF0b3JCZWhhdmlvckVtaXRDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQ
b3NpdGlvbnMpCi0gICAgLCBtX2VudGVyVGV4dENvbnRyb2xzKGJlaGF2aW9yICYgVGV4dEl0ZXJh
dG9yQmVoYXZpb3JFbnRlclRleHRDb250cm9scykKKyAgICAsIG1fZW1pdHNDaGFyYWN0ZXJzQmV0
d2VlbkFsbFZpc2libGVQb3NpdGlvbnMoYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JCZWhhdmlvckVt
aXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKQorICAgICwgbV9lbnRlcnNU
ZXh0Q29udHJvbHMoYmVoYXZpb3IgJiBUZXh0SXRlcmF0b3JCZWhhdmlvckVudGVyc1RleHRDb250
cm9scykKICAgICAsIG1fZW1pdHNUZXh0V2l0aG91dFRyYW5zY29kaW5nKGJlaGF2aW9yICYgVGV4
dEl0ZXJhdG9yQmVoYXZpb3JFbWl0c1RleHRzV2l0aG91dFRyYW5zY29kaW5nKQogewotICAgIGlu
aXQocik7Ci19Ci0KLXZvaWQgVGV4dEl0ZXJhdG9yOjppbml0KGNvbnN0IFJhbmdlKiByKQotewog
ICAgIGlmICghcikKICAgICAgICAgcmV0dXJuOwogCkBAIC0zMjYsMTEgKzMwNiwxMSBAQCB2b2lk
IFRleHRJdGVyYXRvcjo6aW5pdChjb25zdCBSYW5nZSogcikKICAgICBtX3Bhc3RFbmROb2RlID0g
bmV4dEluUHJlT3JkZXJDcm9zc2luZ1NoYWRvd0JvdW5kYXJpZXMoZW5kQ29udGFpbmVyLCBlbmRP
ZmZzZXQpOwogCiAgICAgLy8gaW5pdGlhbGl6ZSBub2RlIHByb2Nlc3Npbmcgc3RhdGUKLSAgICBt
X25lZWRBbm90aGVyTmV3bGluZSA9IGZhbHNlOworICAgIG1fbmVlZHNBbm90aGVyTmV3bGluZSA9
IGZhbHNlOwogICAgIG1fdGV4dEJveCA9IDA7CiAKICAgICAvLyBpbml0aWFsaXplIHJlY29yZCBv
ZiBwcmV2aW91cyBub2RlIHByb2Nlc3NpbmcKLSAgICBtX2hhdmVFbWl0dGVkID0gZmFsc2U7Cisg
ICAgbV9oYXNFbWl0dGVkID0gZmFsc2U7CiAgICAgbV9sYXN0VGV4dE5vZGUgPSAwOwogICAgIG1f
bGFzdFRleHROb2RlRW5kZWRXaXRoQ29sbGFwc2VkU3BhY2UgPSBmYWxzZTsKICAgICBtX2xhc3RD
aGFyYWN0ZXIgPSAwOwpAQCAtMzUxLDE2ICszMzEsMTYgQEAgdm9pZCBUZXh0SXRlcmF0b3I6OmFk
dmFuY2UoKQogICAgIG1fdGV4dExlbmd0aCA9IDA7CiAKICAgICAvLyBoYW5kbGUgcmVtZW1iZXJl
ZCBub2RlIHRoYXQgbmVlZGVkIGEgbmV3bGluZSBhZnRlciB0aGUgdGV4dCBub2RlJ3MgbmV3bGlu
ZQotICAgIGlmIChtX25lZWRBbm90aGVyTmV3bGluZSkgeworICAgIGlmIChtX25lZWRzQW5vdGhl
ck5ld2xpbmUpIHsKICAgICAgICAgLy8gRW1pdCB0aGUgZXh0cmEgbmV3bGluZSwgYW5kIHBvc2l0
aW9uIGl0ICppbnNpZGUqIG1fbm9kZSwgYWZ0ZXIgbV9ub2RlJ3MgCiAgICAgICAgIC8vIGNvbnRl
bnRzLCBpbiBjYXNlIGl0J3MgYSBibG9jaywgaW4gdGhlIHNhbWUgd2F5IHRoYXQgd2UgcG9zaXRp
b24gdGhlIGZpcnN0IAogICAgICAgICAvLyBuZXdsaW5lLiAgVGhlIHJhbmdlIGZvciB0aGUgZW1p
dHRlZCBuZXdsaW5lIHNob3VsZCBzdGFydCB3aGVyZSB0aGUgbGluZSAKICAgICAgICAgLy8gYnJl
YWsgYmVnaW5zLgogICAgICAgICAvLyBGSVhNRTogSXQgd291bGQgYmUgY2xlYW5lciBpZiB3ZSBl
bWl0dGVkIHR3byBuZXdsaW5lcyBkdXJpbmcgdGhlIGxhc3QgCi0gICAgICAgIC8vIGl0ZXJhdGlv
biwgaW5zdGVhZCBvZiB1c2luZyBtX25lZWRBbm90aGVyTmV3bGluZS4KKyAgICAgICAgLy8gaXRl
cmF0aW9uLCBpbnN0ZWFkIG9mIHVzaW5nIG1fbmVlZHNBbm90aGVyTmV3bGluZS4KICAgICAgICAg
Tm9kZSogYmFzZU5vZGUgPSBtX25vZGUtPmxhc3RDaGlsZCgpID8gbV9ub2RlLT5sYXN0Q2hpbGQo
KSA6IG1fbm9kZTsKICAgICAgICAgZW1pdENoYXJhY3RlcignXG4nLCBiYXNlTm9kZS0+cGFyZW50
Tm9kZSgpLCBiYXNlTm9kZSwgMSwgMSk7Ci0gICAgICAgIG1fbmVlZEFub3RoZXJOZXdsaW5lID0g
ZmFsc2U7CisgICAgICAgIG1fbmVlZHNBbm90aGVyTmV3bGluZSA9IGZhbHNlOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC01ODUsNyArNTY1LDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6Omhh
bmRsZVJlcGxhY2VkRWxlbWVudCgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBpZiAobV9lbnRlclRleHRDb250cm9scyAmJiByZW5kZXJlci0+aXNUZXh0Q29udHJvbCgpKSB7
CisgICAgaWYgKG1fZW50ZXJzVGV4dENvbnRyb2xzICYmIHJlbmRlcmVyLT5pc1RleHRDb250cm9s
KCkpIHsKICAgICAgICAgaWYgKEhUTUxFbGVtZW50KiBpbm5lclRleHRFbGVtZW50ID0gdG9SZW5k
ZXJUZXh0Q29udHJvbChyZW5kZXJlciktPmlubmVyVGV4dEVsZW1lbnQoKSkgewogICAgICAgICAg
ICAgbV9ub2RlID0gaW5uZXJUZXh0RWxlbWVudC0+c2hhZG93VHJlZVJvb3ROb2RlKCk7CiAgICAg
ICAgICAgICBwdXNoRnVsbHlDbGlwcGVkU3RhdGUobV9mdWxseUNsaXBwZWRTdGFjaywgbV9ub2Rl
KTsKQEAgLTU5NCw5ICs1NzQsOSBAQCBib29sIFRleHRJdGVyYXRvcjo6aGFuZGxlUmVwbGFjZWRF
bGVtZW50KCkKICAgICAgICAgfQogICAgIH0KIAotICAgIG1faGF2ZUVtaXR0ZWQgPSB0cnVlOwor
ICAgIG1faGFzRW1pdHRlZCA9IHRydWU7CiAKLSAgICBpZiAobV9lbWl0Q2hhcmFjdGVyc0JldHdl
ZW5BbGxWaXNpYmxlUG9zaXRpb25zKSB7CisgICAgaWYgKG1fZW1pdHNDaGFyYWN0ZXJzQmV0d2Vl
bkFsbFZpc2libGVQb3NpdGlvbnMpIHsKICAgICAgICAgLy8gV2Ugd2FudCByZXBsYWNlZCBlbGVt
ZW50cyB0byBiZWhhdmUgbGlrZSBwdW5jdHVhdGlvbiBmb3IgYm91bmRhcnkgCiAgICAgICAgIC8v
IGZpbmRpbmcsIGFuZCB0byBzaW1wbHkgdGFrZSB1cCBzcGFjZSBmb3IgdGhlIHNlbGVjdGlvbiBw
cmVzZXJ2YXRpb24gCiAgICAgICAgIC8vIGNvZGUgaW4gbW92ZVBhcmFncmFwaHMsIHNvIHdlIHVz
ZSBhIGNvbW1hLgpAQCAtNzU4LDcgKzczOCw3IEBAIHN0YXRpYyBpbnQgbWF4T2Zmc2V0SW5jbHVk
aW5nQ29sbGFwc2VkU3BhY2VzKE5vZGUqIG5vZGUpCiAvLyBXaGV0aGVyIG9yIG5vdCB3ZSBzaG91
bGQgZW1pdCBhIGNoYXJhY3RlciBhcyB3ZSBlbnRlciBtX25vZGUgKGlmIGl0J3MgYSBjb250YWlu
ZXIpIG9yIGFzIHdlIGhpdCBpdCAoaWYgaXQncyBhdG9taWMpLgogYm9vbCBUZXh0SXRlcmF0b3I6
OnNob3VsZFJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKCkKIHsKLSAgICBpZiAobV9lbWl0Q2hhcmFj
dGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zICYmIG1fbm9kZS0+cmVuZGVyZXIoKSAmJiBt
X25vZGUtPnJlbmRlcmVyKCktPmlzVGFibGUoKSkKKyAgICBpZiAobV9lbWl0c0NoYXJhY3RlcnNC
ZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyAmJiBtX25vZGUtPnJlbmRlcmVyKCkgJiYgbV9ub2Rl
LT5yZW5kZXJlcigpLT5pc1RhYmxlKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAK
ICAgICAvLyBMZWF2ZSBlbGVtZW50IHBvc2l0aW9uZWQgZmx1c2ggd2l0aCBzdGFydCBvZiBhIHBh
cmFncmFwaApAQCAtNzY3LDcgKzc0Nyw3IEBAIGJvb2wgVGV4dEl0ZXJhdG9yOjpzaG91bGRSZXBy
ZXNlbnROb2RlT2Zmc2V0WmVybygpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKICAgICAv
LyBPdGhlcndpc2UsIHNob3cgdGhlIHBvc2l0aW9uIGlmIHdlIGhhdmUgZW1pdHRlZCBhbnkgY2hh
cmFjdGVycwotICAgIGlmIChtX2hhdmVFbWl0dGVkKQorICAgIGlmIChtX2hhc0VtaXR0ZWQpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIAogICAgIC8vIFdlJ3ZlIG5vdCBlbWl0dGVkIGFueXRo
aW5nIHlldC4gR2VuZXJhbGx5LCB0aGVyZSBpcyBubyBuZWVkIGZvciBhbnkgcG9zaXRpb25pbmcg
dGhlbi4KQEAgLTc4OSw3ICs3NjksNyBAQCBib29sIFRleHRJdGVyYXRvcjo6c2hvdWxkUmVwcmVz
ZW50Tm9kZU9mZnNldFplcm8oKQogCiAgICAgLy8gSWYgd2Ugc3RhcnRlZCBhcyBtX3N0YXJ0Q29u
dGFpbmVyIG9mZnNldCAwIGFuZCB0aGUgY3VycmVudCBub2RlIGlzIGEgZGVzY2VuZGFudCBvZgog
ICAgIC8vIHRoZSBzdGFydCBjb250YWluZXIsIHdlIGFscmVhZHkgaGFkIGVub3VnaCBjb250ZXh0
IHRvIGNvcnJlY3RseSBkZWNpZGUgd2hldGhlciB0bwotICAgIC8vIGVtaXQgYWZ0ZXIgYSBwcmVj
ZWRpbmcgYmxvY2suIFdlIGNob3NlIG5vdCB0byBlbWl0IChtX2hhdmVFbWl0dGVkIGlzIGZhbHNl
KSwKKyAgICAvLyBlbWl0IGFmdGVyIGEgcHJlY2VkaW5nIGJsb2NrLiBXZSBjaG9zZSBub3QgdG8g
ZW1pdCAobV9oYXNFbWl0dGVkIGlzIGZhbHNlKSwKICAgICAvLyBzbyBkb24ndCBzZWNvbmQgZ3Vl
c3MgdGhhdCBub3cuCiAgICAgLy8gTk9URTogSXMgdGhpcyByZWFsbHkgY29ycmVjdCB3aGVuIG1f
bm9kZSBpcyBub3QgYSBsZWZ0bW9zdCBkZXNjZW5kYW50PyBQcm9iYWJseQogICAgIC8vIGltbWF0
ZXJpYWwgc2luY2Ugd2UgbGlrZWx5IHdvdWxkIGhhdmUgYWxyZWFkeSBlbWl0dGVkIHNvbWV0aGlu
ZyBieSBub3cuCkBAIC04MTMsNyArNzkzLDcgQEAgYm9vbCBUZXh0SXRlcmF0b3I6OnNob3VsZFJl
cHJlc2VudE5vZGVPZmZzZXRaZXJvKCkKIAogYm9vbCBUZXh0SXRlcmF0b3I6OnNob3VsZEVtaXRT
cGFjZUJlZm9yZUFuZEFmdGVyTm9kZShOb2RlKiBub2RlKQogewotICAgIHJldHVybiBub2RlLT5y
ZW5kZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCktPmlzVGFibGUoKSAmJiAobm9kZS0+cmVuZGVy
ZXIoKS0+aXNJbmxpbmUoKSB8fCBtX2VtaXRDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3Np
dGlvbnMpOworICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpICYmIG5vZGUtPnJlbmRlcmVyKCkt
PmlzVGFibGUoKSAmJiAobm9kZS0+cmVuZGVyZXIoKS0+aXNJbmxpbmUoKSB8fCBtX2VtaXRzQ2hh
cmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKIH0KIAogdm9pZCBUZXh0SXRlcmF0
b3I6OnJlcHJlc2VudE5vZGVPZmZzZXRaZXJvKCkKQEAgLTg0MCw3ICs4MjAsNyBAQCBib29sIFRl
eHRJdGVyYXRvcjo6aGFuZGxlTm9uVGV4dE5vZGUoKQogewogICAgIGlmIChzaG91bGRFbWl0TmV3
bGluZUZvck5vZGUobV9ub2RlKSkKICAgICAgICAgZW1pdENoYXJhY3RlcignXG4nLCBtX25vZGUt
PnBhcmVudE5vZGUoKSwgbV9ub2RlLCAwLCAxKTsKLSAgICBlbHNlIGlmIChtX2VtaXRDaGFyYWN0
ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgJiYgbV9ub2RlLT5yZW5kZXJlcigpICYmIG1f
bm9kZS0+cmVuZGVyZXIoKS0+aXNIUigpKQorICAgIGVsc2UgaWYgKG1fZW1pdHNDaGFyYWN0ZXJz
QmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgJiYgbV9ub2RlLT5yZW5kZXJlcigpICYmIG1fbm9k
ZS0+cmVuZGVyZXIoKS0+aXNIUigpKQogICAgICAgICBlbWl0Q2hhcmFjdGVyKCcgJywgbV9ub2Rl
LT5wYXJlbnROb2RlKCksIG1fbm9kZSwgMCwgMSk7CiAgICAgZWxzZQogICAgICAgICByZXByZXNl
bnROb2RlT2Zmc2V0WmVybygpOwpAQCAtODUxLDEwICs4MzEsMTAgQEAgYm9vbCBUZXh0SXRlcmF0
b3I6OmhhbmRsZU5vblRleHROb2RlKCkKIHZvaWQgVGV4dEl0ZXJhdG9yOjpleGl0Tm9kZSgpCiB7
CiAgICAgLy8gcHJldmVudCBlbWl0dGluZyBhIG5ld2xpbmUgd2hlbiBleGl0aW5nIGEgY29sbGFw
c2VkIGJsb2NrIGF0IGJlZ2lubmluZyBvZiB0aGUgcmFuZ2UKLSAgICAvLyBGSVhNRTogIW1faGF2
ZUVtaXR0ZWQgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiB0aGVyZSB3YXMgYSBjb2xsYXBzZWQg
YmxvY2suLi4gaXQgY291bGQKKyAgICAvLyBGSVhNRTogIW1faGFzRW1pdHRlZCBkb2VzIG5vdCBu
ZWNlc3NhcmlseSBtZWFuIHRoZXJlIHdhcyBhIGNvbGxhcHNlZCBibG9jay4uLiBpdCBjb3VsZAog
ICAgIC8vIGhhdmUgYmVlbiBhbiBociAoZS5nLikuIEFsc28sIGEgY29sbGFwc2VkIGJsb2NrIGNv
dWxkIGhhdmUgaGVpZ2h0IChlLmcuIGEgdGFibGUpIGFuZAogICAgIC8vIHRoZXJlZm9yZSBsb29r
IGxpa2UgYSBibGFuayBsaW5lLgotICAgIGlmICghbV9oYXZlRW1pdHRlZCkKKyAgICBpZiAoIW1f
aGFzRW1pdHRlZCkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAvLyBFbWl0IHdpdGgg
YSBwb3NpdGlvbiAqaW5zaWRlKiBtX25vZGUsIGFmdGVyIG1fbm9kZSdzIGNvbnRlbnRzLCBpbiAK
QEAgLTg3NSw4ICs4NTUsOCBAQCB2b2lkIFRleHRJdGVyYXRvcjo6ZXhpdE5vZGUoKQogICAgICAg
ICAgICAgLy8gaW5zZXJ0IGEgbmV3bGluZSB3aXRoIGEgcG9zaXRpb24gZm9sbG93aW5nIHRoaXMg
YmxvY2sncyBjb250ZW50cy4KICAgICAgICAgICAgIGVtaXRDaGFyYWN0ZXIoJ1xuJywgYmFzZU5v
ZGUtPnBhcmVudE5vZGUoKSwgYmFzZU5vZGUsIDEsIDEpOwogICAgICAgICAgICAgLy8gcmVtZW1i
ZXIgd2hldGhlciB0byBsYXRlciBhZGQgYSBuZXdsaW5lIGZvciB0aGUgY3VycmVudCBub2RlCi0g
ICAgICAgICAgICBBU1NFUlQoIW1fbmVlZEFub3RoZXJOZXdsaW5lKTsKLSAgICAgICAgICAgIG1f
bmVlZEFub3RoZXJOZXdsaW5lID0gYWRkTmV3bGluZTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9u
ZWVkc0Fub3RoZXJOZXdsaW5lKTsKKyAgICAgICAgICAgIG1fbmVlZHNBbm90aGVyTmV3bGluZSA9
IGFkZE5ld2xpbmU7CiAgICAgICAgIH0gZWxzZSBpZiAoYWRkTmV3bGluZSkKICAgICAgICAgICAg
IC8vIGluc2VydCBhIG5ld2xpbmUgd2l0aCBhIHBvc2l0aW9uIGZvbGxvd2luZyB0aGlzIGJsb2Nr
J3MgY29udGVudHMuCiAgICAgICAgICAgICBlbWl0Q2hhcmFjdGVyKCdcbicsIGJhc2VOb2RlLT5w
YXJlbnROb2RlKCksIGJhc2VOb2RlLCAxLCAxKTsKQEAgLTg4OSw3ICs4NjksNyBAQCB2b2lkIFRl
eHRJdGVyYXRvcjo6ZXhpdE5vZGUoKQogCiB2b2lkIFRleHRJdGVyYXRvcjo6ZW1pdENoYXJhY3Rl
cihVQ2hhciBjLCBOb2RlKiB0ZXh0Tm9kZSwgTm9kZSogb2Zmc2V0QmFzZU5vZGUsIGludCB0ZXh0
U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2Zmc2V0KQogewotICAgIG1faGF2ZUVtaXR0ZWQgPSB0
cnVlOworICAgIG1faGFzRW1pdHRlZCA9IHRydWU7CiAgICAgCiAgICAgLy8gcmVtZW1iZXIgaW5m
b3JtYXRpb24gd2l0aCB3aGljaCB0byBjb25zdHJ1Y3QgdGhlIFRleHRJdGVyYXRvcjo6cmFuZ2Uo
KQogICAgIC8vIE5PVEU6IHRleHROb2RlIGlzIG9mdGVuIG5vdCBhIHRleHQgbm9kZSwgc28gdGhl
IHJhbmdlIHdpbGwgc3BlY2lmeSBjaGlsZCBub2RlcyBvZiBwb3NpdGlvbk5vZGUKQEAgLTkyMyw3
ICs5MDMsNyBAQCB2b2lkIFRleHRJdGVyYXRvcjo6ZW1pdFRleHQoTm9kZSogdGV4dE5vZGUsIGlu
dCB0ZXh0U3RhcnRPZmZzZXQsIGludCB0ZXh0RW5kT2ZmcwogICAgIG1fbGFzdENoYXJhY3RlciA9
IHN0clt0ZXh0RW5kT2Zmc2V0IC0gMV07CiAKICAgICBtX2xhc3RUZXh0Tm9kZUVuZGVkV2l0aENv
bGxhcHNlZFNwYWNlID0gZmFsc2U7Ci0gICAgbV9oYXZlRW1pdHRlZCA9IHRydWU7CisgICAgbV9o
YXNFbWl0dGVkID0gdHJ1ZTsKIH0KIAogUGFzc1JlZlB0cjxSYW5nZT4gVGV4dEl0ZXJhdG9yOjpy
YW5nZSgpIGNvbnN0CkBAIC0xMTc0LDExICsxMTU0LDExIEBAIENoYXJhY3Rlckl0ZXJhdG9yOjpD
aGFyYWN0ZXJJdGVyYXRvcigpCiB7CiB9CiAKLUNoYXJhY3Rlckl0ZXJhdG9yOjpDaGFyYWN0ZXJJ
dGVyYXRvcihjb25zdCBSYW5nZSogciwgYm9vbCBlbWl0Q2hhcmFjdGVyc0JldHdlZW5BbGxWaXNp
YmxlUG9zaXRpb25zLCBib29sIGVudGVyVGV4dENvbnRyb2xzKQorQ2hhcmFjdGVySXRlcmF0b3I6
OkNoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlKiByLCBUZXh0SXRlcmF0b3JCZWhhdmlvciBi
ZWhhdmlvcikKICAgICA6IG1fb2Zmc2V0KDApCiAgICAgLCBtX3J1bk9mZnNldCgwKQogICAgICwg
bV9hdEJyZWFrKHRydWUpCi0gICAgLCBtX3RleHRJdGVyYXRvcihyLCBlbWl0Q2hhcmFjdGVyc0Jl
dHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zLCBlbnRlclRleHRDb250cm9scykKKyAgICAsIG1fdGV4
dEl0ZXJhdG9yKHIsIGJlaGF2aW9yKQogewogICAgIHdoaWxlICghYXRFbmQoKSAmJiBtX3RleHRJ
dGVyYXRvci5sZW5ndGgoKSA9PSAwKQogICAgICAgICBtX3RleHRJdGVyYXRvci5hZHZhbmNlKCk7
CkBAIC0yMDEzLDcgKzE5OTMsNyBAQCBzaXplX3QgU2VhcmNoQnVmZmVyOjpsZW5ndGgoKSBjb25z
dAogaW50IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgoY29uc3QgUmFuZ2UqIHIsIGJvb2wgZm9y
U2VsZWN0aW9uUHJlc2VydmF0aW9uKQogewogICAgIGludCBsZW5ndGggPSAwOwotICAgIGZvciAo
VGV4dEl0ZXJhdG9yIGl0KHIsIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbik7ICFpdC5hdEVuZCgp
OyBpdC5hZHZhbmNlKCkpCisgICAgZm9yIChUZXh0SXRlcmF0b3IgaXQociwgZm9yU2VsZWN0aW9u
UHJlc2VydmF0aW9uID8gVGV4dEl0ZXJhdG9yQmVoYXZpb3JFbWl0c0NoYXJhY3RlcnNCZXR3ZWVu
QWxsVmlzaWJsZVBvc2l0aW9ucyA6IFRleHRJdGVyYXRvckJlaGF2aW9yRGVmYXVsdCk7ICFpdC5h
dEVuZCgpOyBpdC5hZHZhbmNlKCkpCiAgICAgICAgIGxlbmd0aCArPSBpdC5sZW5ndGgoKTsKICAg
ICAKICAgICByZXR1cm4gbGVuZ3RoOwpAQCAtMjAzNSw3ICsyMDE1LDcgQEAgUGFzc1JlZlB0cjxS
YW5nZT4gVGV4dEl0ZXJhdG9yOjpyYW5nZUZyb21Mb2NhdGlvbkFuZExlbmd0aChFbGVtZW50KiBz
Y29wZSwgaW50IHIKIAogICAgIFJlZlB0cjxSYW5nZT4gdGV4dFJ1blJhbmdlOwogCi0gICAgVGV4
dEl0ZXJhdG9yIGl0KHJhbmdlT2ZDb250ZW50cyhzY29wZSkuZ2V0KCksIGZvclNlbGVjdGlvblBy
ZXNlcnZhdGlvbik7CisgICAgVGV4dEl0ZXJhdG9yIGl0KHJhbmdlT2ZDb250ZW50cyhzY29wZSku
Z2V0KCksIGZvclNlbGVjdGlvblByZXNlcnZhdGlvbiA/IFRleHRJdGVyYXRvckJlaGF2aW9yRW1p
dHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlvbnMgOiBUZXh0SXRlcmF0b3JCZWhh
dmlvckRlZmF1bHQpOwogICAgIAogICAgIC8vIEZJWE1FOiB0aGUgYXRFbmQoKSBjaGVjayBzaG91
bGRuJ3QgYmUgbmVjZXNzYXJ5LCB3b3JrYXJvdW5kIGZvciA8aHR0cDovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjI4OT4uCiAgICAgaWYgKHJhbmdlTG9jYXRpb24gPT0gMCAmJiBy
YW5nZUxlbmd0aCA9PSAwICYmIGl0LmF0RW5kKCkpIHsKQEAgLTIyNTgsMTQgKzIyMzgsMTQgQEAg
UGFzc1JlZlB0cjxSYW5nZT4gZmluZFBsYWluVGV4dChjb25zdCBSYW5nZSogcmFuZ2UsIGNvbnN0
IFN0cmluZyYgdGFyZ2V0LCBib29sIGYKICAgICBzaXplX3QgbWF0Y2hTdGFydDsKICAgICBzaXpl
X3QgbWF0Y2hMZW5ndGg7CiAgICAgewotICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBmaW5kSXRl
cmF0b3IocmFuZ2UsIGZhbHNlLCB0cnVlKTsKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgZmlu
ZEl0ZXJhdG9yKHJhbmdlLCBUZXh0SXRlcmF0b3JCZWhhdmlvckVudGVyc1RleHRDb250cm9scyk7
CiAgICAgICAgIG1hdGNoTGVuZ3RoID0gZmluZFBsYWluVGV4dChmaW5kSXRlcmF0b3IsIHRhcmdl
dCwgZm9yd2FyZCwgY2FzZVNlbnNpdGl2ZSwgbWF0Y2hTdGFydCk7CiAgICAgICAgIGlmICghbWF0
Y2hMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gY29sbGFwc2VkVG9Cb3VuZGFyeShyYW5nZSwg
Zm9yd2FyZCk7CiAgICAgfQogCiAgICAgLy8gVGhlbiwgZmluZCB0aGUgZG9jdW1lbnQgcG9zaXRp
b24gb2YgdGhlIHN0YXJ0IGFuZCB0aGUgZW5kIG9mIHRoZSB0ZXh0LgotICAgIENoYXJhY3Rlckl0
ZXJhdG9yIGNvbXB1dGVSYW5nZUl0ZXJhdG9yKHJhbmdlLCBmYWxzZSwgdHJ1ZSk7CisgICAgQ2hh
cmFjdGVySXRlcmF0b3IgY29tcHV0ZVJhbmdlSXRlcmF0b3IocmFuZ2UsIFRleHRJdGVyYXRvckJl
aGF2aW9yRW50ZXJzVGV4dENvbnRyb2xzKTsKICAgICByZXR1cm4gY2hhcmFjdGVyU3VicmFuZ2Uo
Y29tcHV0ZVJhbmdlSXRlcmF0b3IsIG1hdGNoU3RhcnQsIG1hdGNoTGVuZ3RoKTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5oIGIvV2ViQ29yZS9lZGl0aW5n
L1RleHRJdGVyYXRvci5oCmluZGV4IGFiZDgxNjEuLjQ2MjA4MjcgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuaAorKysgYi9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJh
dG9yLmgKQEAgLTcwLDE2ICs3MCwxNSBAQCBwcml2YXRlOgogCiBlbnVtIFRleHRJdGVyYXRvckJl
aGF2aW9yIHsKICAgICBUZXh0SXRlcmF0b3JCZWhhdmlvckRlZmF1bHQgPSAwLAotICAgIFRleHRJ
dGVyYXRvckJlaGF2aW9yRW1pdENoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyA9
IDEgPDwgMCwKLSAgICBUZXh0SXRlcmF0b3JCZWhhdmlvckVudGVyVGV4dENvbnRyb2xzID0gMSA8
PCAxLAorICAgIFRleHRJdGVyYXRvckJlaGF2aW9yRW1pdHNDaGFyYWN0ZXJzQmV0d2VlbkFsbFZp
c2libGVQb3NpdGlvbnMgPSAxIDw8IDAsCisgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3JFbnRlcnNU
ZXh0Q29udHJvbHMgPSAxIDw8IDEsCiAgICAgVGV4dEl0ZXJhdG9yQmVoYXZpb3JFbWl0c1RleHRz
V2l0aG91dFRyYW5zY29kaW5nID0gMSA8PCAyLAogfTsKIAogY2xhc3MgVGV4dEl0ZXJhdG9yIHsK
IHB1YmxpYzoKICAgICBUZXh0SXRlcmF0b3IoKTsKLSAgICBleHBsaWNpdCBUZXh0SXRlcmF0b3Io
Y29uc3QgUmFuZ2UqLCBib29sIGVtaXRDaGFyYWN0ZXJzQmV0d2VlbkFsbFZpc2libGVQb3NpdGlv
bnMgPSBmYWxzZSwgYm9vbCBlbnRlclRleHRDb250cm9scyA9IGZhbHNlKTsKLSAgICBUZXh0SXRl
cmF0b3IoY29uc3QgUmFuZ2UqLCBUZXh0SXRlcmF0b3JCZWhhdmlvcik7CisgICAgZXhwbGljaXQg
VGV4dEl0ZXJhdG9yKGNvbnN0IFJhbmdlKiwgVGV4dEl0ZXJhdG9yQmVoYXZpb3IgPSBUZXh0SXRl
cmF0b3JCZWhhdmlvckRlZmF1bHQpOwogCiAgICAgYm9vbCBhdEVuZCgpIGNvbnN0IHsgcmV0dXJu
ICFtX3Bvc2l0aW9uTm9kZTsgfQogICAgIHZvaWQgYWR2YW5jZSgpOwpAQCAtOTUsNyArOTQsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UmFuZ2U+IHN1YnJhbmdlKFJhbmdlKiBl
bnRpcmVSYW5nZSwgaW50IGNoYXJhY3Rlck9mZnNldCwgaW50IGNoYXJhY3RlckNvdW50KTsKICAg
ICAKIHByaXZhdGU6Ci0gICAgdm9pZCBpbml0KGNvbnN0IFJhbmdlKik7CiAgICAgdm9pZCBleGl0
Tm9kZSgpOwogICAgIGJvb2wgc2hvdWxkUmVwcmVzZW50Tm9kZU9mZnNldFplcm8oKTsKICAgICBi
b29sIHNob3VsZEVtaXRTcGFjZUJlZm9yZUFuZEFmdGVyTm9kZShOb2RlKik7CkBAIC0xMzIsNyAr
MTMwLDcgQEAgcHJpdmF0ZToKICAgICAKICAgICAvLyBVc2VkIHdoZW4gdGhlcmUgaXMgc3RpbGwg
c29tZSBwZW5kaW5nIHRleHQgZnJvbSB0aGUgY3VycmVudCBub2RlOyB3aGVuIHRoZXNlCiAgICAg
Ly8gYXJlIGZhbHNlIGFuZCAwLCB3ZSBnbyBiYWNrIHRvIG5vcm1hbCBpdGVyYXRpbmcuCi0gICAg
Ym9vbCBtX25lZWRBbm90aGVyTmV3bGluZTsKKyAgICBib29sIG1fbmVlZHNBbm90aGVyTmV3bGlu
ZTsKICAgICBJbmxpbmVUZXh0Qm94KiBtX3RleHRCb3g7CiAgICAgCiAgICAgLy8gVXNlZCB0byBk
byB0aGUgd2hpdGVzcGFjZSBjb2xsYXBzaW5nIGxvZ2ljLgpAQCAtMTQ4LDE0ICsxNDYsMTQgQEAg
cHJpdmF0ZToKICAgICBzaXplX3QgbV9zb3J0ZWRUZXh0Qm94ZXNQb3NpdGlvbjsKICAgICAKICAg
ICAvLyBVc2VkIHdoZW4gZGVjaWRpbmcgd2hldGhlciB0byBlbWl0IGEgInBvc2l0aW9uaW5nIiAo
ZS5nLiBuZXdsaW5lKSBiZWZvcmUgYW55IG90aGVyIGNvbnRlbnQKLSAgICBib29sIG1faGF2ZUVt
aXR0ZWQ7CisgICAgYm9vbCBtX2hhc0VtaXR0ZWQ7CiAgICAgCiAgICAgLy8gVXNlZCBieSBzZWxl
Y3Rpb24gcHJlc2VydmF0aW9uIGNvZGUuICBUaGVyZSBzaG91bGQgYmUgb25lIGNoYXJhY3RlciBl
bWl0dGVkIGJldHdlZW4gZXZlcnkgVmlzaWJsZVBvc2l0aW9uCiAgICAgLy8gaW4gdGhlIFJhbmdl
IHVzZWQgdG8gY3JlYXRlIHRoZSBUZXh0SXRlcmF0b3IuCiAgICAgLy8gRklYTUUgPHJkYXI6Ly9w
cm9ibGVtLzYwMjg4MTg+OiBUaGlzIGZ1bmN0aW9uYWxpdHkgc2hvdWxkIGV2ZW50dWFsbHkgYmUg
cGhhc2VkIG91dCB3aGVuIHdlIHJld3JpdGUgCiAgICAgLy8gbW92ZVBhcmFncmFwaHMgdG8gbm90
IGNsb25lL2Rlc3Ryb3kgbW92ZWQgY29udGVudC4KLSAgICBib29sIG1fZW1pdENoYXJhY3RlcnNC
ZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9uczsKLSAgICBib29sIG1fZW50ZXJUZXh0Q29udHJvbHM7
CisgICAgYm9vbCBtX2VtaXRzQ2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zOwor
ICAgIGJvb2wgbV9lbnRlcnNUZXh0Q29udHJvbHM7CiAKICAgICAvLyBVc2VkIHdoZW4gd2Ugd2Fu
dCB0ZXh0cyBmb3IgY29weWluZywgcGFzdGluZywgYW5kIHRyYW5zcG9zaW5nLgogICAgIGJvb2wg
bV9lbWl0c1RleHRXaXRob3V0VHJhbnNjb2Rpbmc7CkBAIC0yMjIsNyArMjIwLDcgQEAgcHJpdmF0
ZToKIGNsYXNzIENoYXJhY3Rlckl0ZXJhdG9yIHsKIHB1YmxpYzoKICAgICBDaGFyYWN0ZXJJdGVy
YXRvcigpOwotICAgIGV4cGxpY2l0IENoYXJhY3Rlckl0ZXJhdG9yKGNvbnN0IFJhbmdlKiwgYm9v
bCBlbWl0Q2hhcmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zID0gZmFsc2UsIGJvb2wg
ZW50ZXJUZXh0Q29udHJvbHMgPSBmYWxzZSk7CisgICAgZXhwbGljaXQgQ2hhcmFjdGVySXRlcmF0
b3IoY29uc3QgUmFuZ2UqLCBUZXh0SXRlcmF0b3JCZWhhdmlvciA9IFRleHRJdGVyYXRvckJlaGF2
aW9yRGVmYXVsdCk7CiAgICAgCiAgICAgdm9pZCBhZHZhbmNlKGludCBudW1DaGFyYWN0ZXJzKTsK
ICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcCBi
L1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAppbmRleCA2Nzg0NjMxLi43ZWRk
MWQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAKKysr
IGIvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCkBAIC0yMjYsNyArMjI2LDcg
QEAgdm9pZCBWaXNpYmxlU2VsZWN0aW9uOjphcHBlbmRUcmFpbGluZ1doaXRlc3BhY2UoKQogICAg
IGlmICghc2VhcmNoUmFuZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIENoYXJhY3Rlckl0ZXJh
dG9yIGNoYXJJdChzZWFyY2hSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgQ2hhcmFjdGVySXRlcmF0
b3IgY2hhckl0KHNlYXJjaFJhbmdlLmdldCgpLCBUZXh0SXRlcmF0b3JCZWhhdmlvckVtaXRzQ2hh
cmFjdGVyc0JldHdlZW5BbGxWaXNpYmxlUG9zaXRpb25zKTsKIAogICAgIGZvciAoOyBjaGFySXQu
bGVuZ3RoKCk7IGNoYXJJdC5hZHZhbmNlKDEpKSB7CiAgICAgICAgIFVDaGFyIGMgPSBjaGFySXQu
Y2hhcmFjdGVycygpWzBdOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5p
dHMuY3BwIGIvV2ViQ29yZS9lZGl0aW5nL3Zpc2libGVfdW5pdHMuY3BwCmluZGV4IDNkODVhZDEu
LjdmNzUxMmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZWRpdGluZy92aXNpYmxlX3VuaXRzLmNwcAor
KysgYi9XZWJDb3JlL2VkaXRpbmcvdmlzaWJsZV91bml0cy5jcHAKQEAgLTIwNyw3ICsyMDcsNyBA
QCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRp
b24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwogCiAgICAgc2VhcmNoUmFuZ2UtPnNlbGVjdE5vZGVD
b250ZW50cyhib3VuZGFyeSwgZWMpOwogICAgIHNlYXJjaFJhbmdlLT5zZXRTdGFydChzdGFydC5u
b2RlKCksIHN0YXJ0LmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGVjKTsKLSAgICBUZXh0SXRl
cmF0b3IgaXQoc2VhcmNoUmFuZ2UuZ2V0KCksIHRydWUpOworICAgIFRleHRJdGVyYXRvciBpdChz
ZWFyY2hSYW5nZS5nZXQoKSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3JFbWl0c0NoYXJhY3RlcnNCZXR3
ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CiAgICAgdW5zaWduZWQgbmV4dCA9IDA7CiAgICAgYm9v
bCBpblRleHRTZWN1cml0eU1vZGUgPSBzdGFydC5ub2RlKCkgJiYgc3RhcnQubm9kZSgpLT5yZW5k
ZXJlcigpICYmIHN0YXJ0Lm5vZGUoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+dGV4dFNlY3VyaXR5
KCkgIT0gVFNOT05FOwogICAgIGJvb2wgbmVlZE1vcmVDb250ZXh0ID0gZmFsc2U7CkBAIC0yMzgs
NyArMjM4LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnkoY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmMKICAgICAgICAgcG9zID0gaXQucmFu
Z2UoKS0+c3RhcnRQb3NpdGlvbigpOwogICAgIH0gZWxzZSBpZiAobmV4dCAhPSBwcmVmaXhMZW5n
dGgpIHsKICAgICAgICAgLy8gVXNlIHRoZSBjaGFyYWN0ZXIgaXRlcmF0b3IgdG8gdHJhbnNsYXRl
IHRoZSBuZXh0IHZhbHVlIGludG8gYSBET00gcG9zaXRpb24uCi0gICAgICAgIENoYXJhY3Rlckl0
ZXJhdG9yIGNoYXJJdChzZWFyY2hSYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgICAgIENoYXJhY3Rl
ckl0ZXJhdG9yIGNoYXJJdChzZWFyY2hSYW5nZS5nZXQoKSwgVGV4dEl0ZXJhdG9yQmVoYXZpb3JF
bWl0c0NoYXJhY3RlcnNCZXR3ZWVuQWxsVmlzaWJsZVBvc2l0aW9ucyk7CiAgICAgICAgIGNoYXJJ
dC5hZHZhbmNlKG5leHQgLSBwcmVmaXhMZW5ndGggLSAxKTsKICAgICAgICAgcG9zID0gY2hhckl0
LnJhbmdlKCktPmVuZFBvc2l0aW9uKCk7CiAgICAgICAgIAo=
</data>
<flag name="review"
          id="37749"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>