<?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>128223</bug_id>
          
          <creation_ts>2014-02-04 16:48:30 -0800</creation_ts>
          <short_desc>Declare GlyphBuffers on the heap instead of the stack</short_desc>
          <delta_ts>2014-02-05 11:54:09 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>d-r</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jonlee</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>976577</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-02-04 16:48:30 -0800</bug_when>
    <thetext>Declare GlyphBuffers on the heap instead of the stack</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976578</commentid>
    <comment_count>1</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-02-04 16:51:49 -0800</bug_when>
    <thetext>&lt;rdar://problem/15675294&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>976582</commentid>
    <comment_count>2</comment_count>
      <attachid>223183</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2014-02-04 17:12:45 -0800</bug_when>
    <thetext>Created attachment 223183
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>977021</commentid>
    <comment_count>3</comment_count>
      <attachid>223183</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-02-05 11:54:09 -0800</bug_when>
    <thetext>Comment on attachment 223183
Patch

It&apos;s not clear to me that this the correct solution.
Why is GlyphBuffer so big? Can its inline capacities be reduced?
Does this patch slow us down? Should we cache a GlyphBuffer?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223183</attachid>
            <date>2014-02-04 17:12:45 -0800</date>
            <delta_ts>2014-02-05 11:54:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128223-20140204171243.patch</filename>
            <type>text/plain</type>
            <size>17558</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzMjAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmNjMWE0NjVmYjNmNjNh
OTk0YTYxYWI4ZDQ0Yjg4NmJjNjkyMDlmMy4uOGNjZDA0OGY2OTlmMjFlMDg0ODdkMGY1NDEwZWE3
MmE1N2I4YTNjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE0LTAyLTA0ICBNeWxl
cyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CisKKyAgICAgICAgRGVjbGFyZSBH
bHlwaEJ1ZmZlcnMgb24gdGhlIGhlYXAgaW5zdGVhZCBvZiB0aGUgc3RhY2sKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODIyMworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdseXBoQnVmZmVycyBhcmUgNTMz
MTIgYnl0ZXMgYmlnLCBhbmQgaGVuY2Ugc2hvdWxkIHByb2JhYmx5CisgICAgICAgIG5vdCBiZSBk
ZWNsYXJlZCBvbiB0aGUgc3RhY2sKKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lY2Vzc2Fy
eSBiZWNhdXNlIHRoZXJlIGlzIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250Ojpn
ZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dDo6ZHJhd1NpbXBsZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0VtcGhhc2lz
TWFya3NGb3JTaW1wbGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdFbXBoYXNp
c01hcmtzKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmZsb2F0V2lkdGhGb3JTaW1wbGVUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OnNlbGVjdGlvblJlY3RGb3JTaW1wbGVUZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6Om9mZnNldEZvclBvc2l0aW9uRm9yU2ltcGxlVGV4dCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRDb21wbGV4VGV4dE1hYy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JDb21wbGV4VGV4dCk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpGb250
OjpkYXNoZXNGb3JJbnRlcnNlY3Rpb25zV2l0aFJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRN
ZXRyaWNzQnVpbGRlcjo6YWR2YW5jZVNpbXBsZVRleHQpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
VGV4dFJ1blJlbmRlcmluZ0NvbnRleHQ6OmZsb2F0V2lkdGhVc2luZ1NWR0ZvbnQpOgorCiAyMDE0
LTAxLTI5ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSBp
dCBwb3NzaWJsZSB0byBpbXBsZW1lbnQgSlMgYnVpbHRpbnMgaW4gSlMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFzdFBhdGguY3BwCmluZGV4IDY2MDJjM2I2
NjYzMzhmZjNjMTNlY2VkYjQzN2U0NmI5ODcyZmY3ZWEuLjU0YTQ5MDdlNjE0OWRhZWI0YjJkODcz
OGNhNzkzNjU5OTZlZjM5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL0ZvbnRGYXN0UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udEZhc3RQYXRoLmNwcApAQCAtMTI5LDI2ICsxMjksMjYgQEAgaW50IEZvbnQ6OmVt
cGhhc2lzTWFya0hlaWdodChjb25zdCBBdG9taWNTdHJpbmcmIG1hcmspIGNvbnN0CiBmbG9hdCBG
b250OjpnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVu
LCBpbnQgZnJvbSwgaW50IHRvLCBHbHlwaEJ1ZmZlciYgZ2x5cGhCdWZmZXIsIEZvclRleHRFbXBo
YXNpc09yTm90IGZvclRleHRFbXBoYXNpcykgY29uc3QKIHsKICAgICBXaWR0aEl0ZXJhdG9yIGl0
KHRoaXMsIHJ1biwgMCwgZmFsc2UsIGZvclRleHRFbXBoYXNpcyk7Ci0gICAgR2x5cGhCdWZmZXIg
bG9jYWxHbHlwaEJ1ZmZlcjsKLSAgICBpdC5hZHZhbmNlKHJ1bi5sZW5ndGgoKSwgJmxvY2FsR2x5
cGhCdWZmZXIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaEJ1ZmZlcj4gbG9jYWxHbHlwaEJ1
ZmZlcihuZXcgR2x5cGhCdWZmZXIoKSk7CisgICAgaXQuYWR2YW5jZShydW4ubGVuZ3RoKCksIGxv
Y2FsR2x5cGhCdWZmZXIuZ2V0KCkpOwogCi0gICAgaWYgKGxvY2FsR2x5cGhCdWZmZXIuaXNFbXB0
eSgpKQorICAgIGlmIChsb2NhbEdseXBoQnVmZmVyLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biAwOwogCiAgICAgZmxvYXQgdG90YWxXaWR0aCA9IGl0Lm1fcnVuV2lkdGhTb0ZhcjsKICAgICBm
bG9hdCBiZWZvcmVXaWR0aCA9IDA7CiAgICAgaW50IGdseXBoUG9zID0gMDsKLSAgICBmb3IgKDsg
Z2x5cGhQb3MgPCBsb2NhbEdseXBoQnVmZmVyLnNpemUoKSAmJiBpdC5tX2NoYXJhY3RlckluZGV4
T2ZHbHlwaFtnbHlwaFBvc10gPCBmcm9tOyArK2dseXBoUG9zKQotICAgICAgICBiZWZvcmVXaWR0
aCArPSBsb2NhbEdseXBoQnVmZmVyLmFkdmFuY2VBdChnbHlwaFBvcykud2lkdGgoKTsKKyAgICBm
b3IgKDsgZ2x5cGhQb3MgPCBsb2NhbEdseXBoQnVmZmVyLT5zaXplKCkgJiYgaXQubV9jaGFyYWN0
ZXJJbmRleE9mR2x5cGhbZ2x5cGhQb3NdIDwgZnJvbTsgKytnbHlwaFBvcykKKyAgICAgICAgYmVm
b3JlV2lkdGggKz0gbG9jYWxHbHlwaEJ1ZmZlci0+YWR2YW5jZUF0KGdseXBoUG9zKS53aWR0aCgp
OwogICAgIGludCBnbHlwaEZyb20gPSBnbHlwaFBvczsKIAogICAgIGZsb2F0IGFmdGVyV2lkdGgg
PSB0b3RhbFdpZHRoOwotICAgIGdseXBoUG9zID0gbG9jYWxHbHlwaEJ1ZmZlci5zaXplKCkgLSAx
OworICAgIGdseXBoUG9zID0gbG9jYWxHbHlwaEJ1ZmZlci0+c2l6ZSgpIC0gMTsKICAgICBmb3Ig
KDsgZ2x5cGhQb3MgPj0gZ2x5cGhGcm9tICYmIGl0Lm1fY2hhcmFjdGVySW5kZXhPZkdseXBoW2ds
eXBoUG9zXSA+PSB0bzsgLS1nbHlwaFBvcykKLSAgICAgICAgYWZ0ZXJXaWR0aCAtPSBsb2NhbEds
eXBoQnVmZmVyLmFkdmFuY2VBdChnbHlwaFBvcykud2lkdGgoKTsKKyAgICAgICAgYWZ0ZXJXaWR0
aCAtPSBsb2NhbEdseXBoQnVmZmVyLT5hZHZhbmNlQXQoZ2x5cGhQb3MpLndpZHRoKCk7CiAgICAg
aW50IGdseXBoVG8gPSBnbHlwaFBvcyArIDE7CiAKLSAgICBnbHlwaEJ1ZmZlci5hZGQoJmxvY2Fs
R2x5cGhCdWZmZXIsIGdseXBoRnJvbSwgZ2x5cGhUbyAtIGdseXBoRnJvbSk7CisgICAgZ2x5cGhC
dWZmZXIuYWRkKGxvY2FsR2x5cGhCdWZmZXIuZ2V0KCksIGdseXBoRnJvbSwgZ2x5cGhUbyAtIGds
eXBoRnJvbSk7CiAKICAgICBpZiAocnVuLnJ0bCgpKSB7CiAgICAgICAgIGdseXBoQnVmZmVyLnJl
dmVyc2UoMCwgZ2x5cGhCdWZmZXIuc2l6ZSgpKTsKQEAgLTE2MSwyOCArMTYxLDI4IEBAIGZsb2F0
IEZvbnQ6OmdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBy
dW4sIGludCBmcm9tLCBpbnQKIGZsb2F0IEZvbnQ6OmRyYXdTaW1wbGVUZXh0KEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2lu
dCwgaW50IGZyb20sIGludCB0bykgY29uc3QKIHsKICAgICAvLyBUaGlzIGdseXBoIGJ1ZmZlciBo
b2xkcyBvdXIgZ2x5cGhzK2FkdmFuY2VzK2ZvbnQgZGF0YSBmb3IgZWFjaCBnbHlwaC4KLSAgICBH
bHlwaEJ1ZmZlciBnbHlwaEJ1ZmZlcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhCdWZmZXI+
IGdseXBoQnVmZmVyKG5ldyBHbHlwaEJ1ZmZlcigpKTsKIAotICAgIGZsb2F0IHN0YXJ0WCA9IHBv
aW50LngoKSArIGdldEdseXBoc0FuZEFkdmFuY2VzRm9yU2ltcGxlVGV4dChydW4sIGZyb20sIHRv
LCBnbHlwaEJ1ZmZlcik7CisgICAgZmxvYXQgc3RhcnRYID0gcG9pbnQueCgpICsgZ2V0R2x5cGhz
QW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgZnJvbSwgdG8sICpnbHlwaEJ1ZmZlcik7CiAK
LSAgICBpZiAoZ2x5cGhCdWZmZXIuaXNFbXB0eSgpKQorICAgIGlmIChnbHlwaEJ1ZmZlci0+aXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIEZsb2F0UG9pbnQgc3RhcnRQb2ludChz
dGFydFgsIHBvaW50LnkoKSk7Ci0gICAgZHJhd0dseXBoQnVmZmVyKGNvbnRleHQsIHJ1biwgZ2x5
cGhCdWZmZXIsIHN0YXJ0UG9pbnQpOworICAgIGRyYXdHbHlwaEJ1ZmZlcihjb250ZXh0LCBydW4s
ICpnbHlwaEJ1ZmZlciwgc3RhcnRQb2ludCk7CiAKICAgICByZXR1cm4gc3RhcnRQb2ludC54KCkg
LSBzdGFydFg7CiB9CiAKIHZvaWQgRm9udDo6ZHJhd0VtcGhhc2lzTWFya3NGb3JTaW1wbGVUZXh0
KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBBdG9t
aWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50LCBpbnQgZnJvbSwgaW50IHRv
KSBjb25zdAogewotICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGZsb2F0IGluaXRp
YWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgZnJvbSwg
dG8sIGdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFzaXMpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxH
bHlwaEJ1ZmZlcj4gZ2x5cGhCdWZmZXIobmV3IEdseXBoQnVmZmVyKCkpOworICAgIGZsb2F0IGlu
aXRpYWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JTaW1wbGVUZXh0KHJ1biwgZnJv
bSwgdG8sICpnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsKIAotICAgIGlmIChnbHlwaEJ1
ZmZlci5pc0VtcHR5KCkpCisgICAgaWYgKGdseXBoQnVmZmVyLT5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIHJ1biwgZ2x5cGhCdWZm
ZXIsIG1hcmssIEZsb2F0UG9pbnQocG9pbnQueCgpICsgaW5pdGlhbEFkdmFuY2UsIHBvaW50Lnko
KSkpOworICAgIGRyYXdFbXBoYXNpc01hcmtzKGNvbnRleHQsIHJ1biwgKmdseXBoQnVmZmVyLCBt
YXJrLCBGbG9hdFBvaW50KHBvaW50LngoKSArIGluaXRpYWxBZHZhbmNlLCBwb2ludC55KCkpKTsK
IH0KIAogdm9pZCBGb250OjpkcmF3R2x5cGhCdWZmZXIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEdseXBoQnVmZmVyJiBnbHlwaEJ1ZmZlciwgRmxv
YXRQb2ludCYgcG9pbnQpIGNvbnN0CkBAIC0yNzAsMjMgKzI3MCwyMyBAQCB2b2lkIEZvbnQ6OmRy
YXdFbXBoYXNpc01hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYg
cnVuLCBjb25zdAogICAgIGZsb2F0IG1pZGRsZU9mTGFzdEdseXBoID0gb2Zmc2V0VG9NaWRkbGVP
ZkdseXBoQXRJbmRleChnbHlwaEJ1ZmZlciwgMCk7CiAgICAgRmxvYXRQb2ludCBzdGFydFBvaW50
KHBvaW50LngoKSArIG1pZGRsZU9mTGFzdEdseXBoIC0gb2Zmc2V0VG9NaWRkbGVPZkdseXBoKG1h
cmtGb250RGF0YSwgbWFya0dseXBoKSwgcG9pbnQueSgpKTsKIAotICAgIEdseXBoQnVmZmVyIG1h
cmtCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdseXBoQnVmZmVyPiBtYXJrQnVmZmVyKG5l
dyBHbHlwaEJ1ZmZlcigpKTsKICAgICBmb3IgKGludCBpID0gMDsgaSArIDEgPCBnbHlwaEJ1ZmZl
ci5zaXplKCk7ICsraSkgewogICAgICAgICBmbG9hdCBtaWRkbGVPZk5leHRHbHlwaCA9IG9mZnNl
dFRvTWlkZGxlT2ZHbHlwaEF0SW5kZXgoZ2x5cGhCdWZmZXIsIGkgKyAxKTsKICAgICAgICAgZmxv
YXQgYWR2YW5jZSA9IGdseXBoQnVmZmVyLmFkdmFuY2VBdChpKS53aWR0aCgpIC0gbWlkZGxlT2ZM
YXN0R2x5cGggKyBtaWRkbGVPZk5leHRHbHlwaDsKLSAgICAgICAgbWFya0J1ZmZlci5hZGQoZ2x5
cGhCdWZmZXIuZ2x5cGhBdChpKSA/IG1hcmtHbHlwaCA6IHNwYWNlR2x5cGgsIG1hcmtGb250RGF0
YSwgYWR2YW5jZSk7CisgICAgICAgIG1hcmtCdWZmZXItPmFkZChnbHlwaEJ1ZmZlci5nbHlwaEF0
KGkpID8gbWFya0dseXBoIDogc3BhY2VHbHlwaCwgbWFya0ZvbnREYXRhLCBhZHZhbmNlKTsKICAg
ICAgICAgbWlkZGxlT2ZMYXN0R2x5cGggPSBtaWRkbGVPZk5leHRHbHlwaDsKICAgICB9Ci0gICAg
bWFya0J1ZmZlci5hZGQoZ2x5cGhCdWZmZXIuZ2x5cGhBdChnbHlwaEJ1ZmZlci5zaXplKCkgLSAx
KSA/IG1hcmtHbHlwaCA6IHNwYWNlR2x5cGgsIG1hcmtGb250RGF0YSwgMCk7CisgICAgbWFya0J1
ZmZlci0+YWRkKGdseXBoQnVmZmVyLmdseXBoQXQoZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gMSkgPyBt
YXJrR2x5cGggOiBzcGFjZUdseXBoLCBtYXJrRm9udERhdGEsIDApOwogCi0gICAgZHJhd0dseXBo
QnVmZmVyKGNvbnRleHQsIHJ1biwgbWFya0J1ZmZlciwgc3RhcnRQb2ludCk7CisgICAgZHJhd0ds
eXBoQnVmZmVyKGNvbnRleHQsIHJ1biwgKm1hcmtCdWZmZXIsIHN0YXJ0UG9pbnQpOwogfQogCiBm
bG9hdCBGb250OjpmbG9hdFdpZHRoRm9yU2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhh
c2hTZXQ8Y29uc3QgU2ltcGxlRm9udERhdGEqPiogZmFsbGJhY2tGb250cywgR2x5cGhPdmVyZmxv
dyogZ2x5cGhPdmVyZmxvdykgY29uc3QKIHsKICAgICBXaWR0aEl0ZXJhdG9yIGl0KHRoaXMsIHJ1
biwgZmFsbGJhY2tGb250cywgZ2x5cGhPdmVyZmxvdyk7Ci0gICAgR2x5cGhCdWZmZXIgZ2x5cGhC
dWZmZXI7Ci0gICAgaXQuYWR2YW5jZShydW4ubGVuZ3RoKCksICh0eXBlc2V0dGluZ0ZlYXR1cmVz
KCkgJiAoS2VybmluZyB8IExpZ2F0dXJlcykpID8gJmdseXBoQnVmZmVyIDogMCk7CisgICAgc3Rk
Ojp1bmlxdWVfcHRyPEdseXBoQnVmZmVyPiBnbHlwaEJ1ZmZlcihuZXcgR2x5cGhCdWZmZXIoKSk7
CisgICAgaXQuYWR2YW5jZShydW4ubGVuZ3RoKCksICh0eXBlc2V0dGluZ0ZlYXR1cmVzKCkgJiAo
S2VybmluZyB8IExpZ2F0dXJlcykpID8gZ2x5cGhCdWZmZXIuZ2V0KCkgOiAwKTsKIAogICAgIGlm
IChnbHlwaE92ZXJmbG93KSB7CiAgICAgICAgIGdseXBoT3ZlcmZsb3ctPnRvcCA9IHN0ZDo6bWF4
PGludD4oZ2x5cGhPdmVyZmxvdy0+dG9wLCBjZWlsZigtaXQubWluR2x5cGhCb3VuZGluZ0JveFko
KSkgLSAoZ2x5cGhPdmVyZmxvdy0+Y29tcHV0ZUJvdW5kcyA/IDAgOiBmb250TWV0cmljcygpLmFz
Y2VudCgpKSk7CkBAIC0zMDAsMjEgKzMwMCwyMSBAQCBmbG9hdCBGb250OjpmbG9hdFdpZHRoRm9y
U2ltcGxlVGV4dChjb25zdCBUZXh0UnVuJiBydW4sIEhhc2hTZXQ8Y29uc3QgU2ltcGxlRm9udAog
CiBGbG9hdFJlY3QgRm9udDo6c2VsZWN0aW9uUmVjdEZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1
biYgcnVuLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCwgaW50IGgsIGludCBmcm9tLCBpbnQgdG8p
IGNvbnN0CiB7Ci0gICAgR2x5cGhCdWZmZXIgZ2x5cGhCdWZmZXI7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEdseXBoQnVmZmVyPiBnbHlwaEJ1ZmZlcihuZXcgR2x5cGhCdWZmZXIoKSk7CiAgICAgV2lk
dGhJdGVyYXRvciBpdCh0aGlzLCBydW4pOwotICAgIGl0LmFkdmFuY2UocnVuLmxlbmd0aCgpLCAm
Z2x5cGhCdWZmZXIpOworICAgIGl0LmFkdmFuY2UocnVuLmxlbmd0aCgpLCBnbHlwaEJ1ZmZlci5n
ZXQoKSk7CiAKICAgICBmbG9hdCB0b3RhbFdpZHRoID0gaXQubV9ydW5XaWR0aFNvRmFyOwogICAg
IGZsb2F0IGJlZm9yZVdpZHRoID0gMDsKICAgICBpbnQgZ2x5cGhQb3MgPSAwOwotICAgIGZvciAo
OyBnbHlwaFBvcyA8IGdseXBoQnVmZmVyLnNpemUoKSAmJiBpdC5tX2NoYXJhY3RlckluZGV4T2ZH
bHlwaFtnbHlwaFBvc10gPCBmcm9tOyArK2dseXBoUG9zKQotICAgICAgICBiZWZvcmVXaWR0aCAr
PSBnbHlwaEJ1ZmZlci5hZHZhbmNlQXQoZ2x5cGhQb3MpLndpZHRoKCk7CisgICAgZm9yICg7IGds
eXBoUG9zIDwgZ2x5cGhCdWZmZXItPnNpemUoKSAmJiBpdC5tX2NoYXJhY3RlckluZGV4T2ZHbHlw
aFtnbHlwaFBvc10gPCBmcm9tOyArK2dseXBoUG9zKQorICAgICAgICBiZWZvcmVXaWR0aCArPSBn
bHlwaEJ1ZmZlci0+YWR2YW5jZUF0KGdseXBoUG9zKS53aWR0aCgpOwogICAgIGludCBnbHlwaEZy
b20gPSBnbHlwaFBvczsKIAogICAgIGZsb2F0IGFmdGVyV2lkdGggPSB0b3RhbFdpZHRoOwotICAg
IGdseXBoUG9zID0gZ2x5cGhCdWZmZXIuc2l6ZSgpIC0gMTsKKyAgICBnbHlwaFBvcyA9IGdseXBo
QnVmZmVyLT5zaXplKCkgLSAxOwogICAgIGZvciAoOyBnbHlwaFBvcyA+PSBnbHlwaEZyb20gJiYg
aXQubV9jaGFyYWN0ZXJJbmRleE9mR2x5cGhbZ2x5cGhQb3NdID49IHRvOyAtLWdseXBoUG9zKQot
ICAgICAgICBhZnRlcldpZHRoIC09IGdseXBoQnVmZmVyLmFkdmFuY2VBdChnbHlwaFBvcykud2lk
dGgoKTsKKyAgICAgICAgYWZ0ZXJXaWR0aCAtPSBnbHlwaEJ1ZmZlci0+YWR2YW5jZUF0KGdseXBo
UG9zKS53aWR0aCgpOwogCiAgICAgLy8gVXNpbmcgcm91bmRmKCkgcmF0aGVyIHRoYW4gY2VpbGYo
KSBmb3IgdGhlIHJpZ2h0IGVkZ2UgYXMgYSBjb21wcm9taXNlIHRvIGVuc3VyZSBjb3JyZWN0IGNh
cmV0IHBvc2l0aW9uaW5nLgogICAgIGlmIChydW4ucnRsKCkpIHsKQEAgLTMyNiwyMCArMzI2LDIw
IEBAIEZsb2F0UmVjdCBGb250OjpzZWxlY3Rpb25SZWN0Rm9yU2ltcGxlVGV4dChjb25zdCBUZXh0
UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmCiAKIGludCBGb250OjpvZmZzZXRGb3JQb3NpdGlv
bkZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBmbG9hdCB4LCBib29sIGluY2x1ZGVQ
YXJ0aWFsR2x5cGhzKSBjb25zdAogewotICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOworICAg
IHN0ZDo6dW5pcXVlX3B0cjxHbHlwaEJ1ZmZlcj4gZ2x5cGhCdWZmZXIobmV3IEdseXBoQnVmZmVy
KCkpOwogICAgIFdpZHRoSXRlcmF0b3IgaXQodGhpcywgcnVuKTsKLSAgICBpdC5hZHZhbmNlKHJ1
bi5sZW5ndGgoKSwgJmdseXBoQnVmZmVyKTsKKyAgICBpdC5hZHZhbmNlKHJ1bi5sZW5ndGgoKSwg
Z2x5cGhCdWZmZXIuZ2V0KCkpOwogCiAgICAgaW50IGNoYXJhY3Rlck9mZnNldCA9IDA7CiAgICAg
aWYgKHJ1bi5ydGwoKSkgewogICAgICAgICBmbG9hdCBjdXJyZW50WCA9IGl0Lm1fcnVuV2lkdGhT
b0ZhcjsKLSAgICAgICAgZm9yIChpbnQgZ2x5cGhQb3NpdGlvbiA9IDA7IGdseXBoUG9zaXRpb24g
PD0gZ2x5cGhCdWZmZXIuc2l6ZSgpOyArK2dseXBoUG9zaXRpb24pIHsKLSAgICAgICAgICAgIGlm
IChnbHlwaFBvc2l0aW9uID09IGdseXBoQnVmZmVyLnNpemUoKSkgeworICAgICAgICBmb3IgKGlu
dCBnbHlwaFBvc2l0aW9uID0gMDsgZ2x5cGhQb3NpdGlvbiA8PSBnbHlwaEJ1ZmZlci0+c2l6ZSgp
OyArK2dseXBoUG9zaXRpb24pIHsKKyAgICAgICAgICAgIGlmIChnbHlwaFBvc2l0aW9uID09IGds
eXBoQnVmZmVyLT5zaXplKCkpIHsKICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJPZmZzZXQgPSBy
dW4ubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBjaGFyYWN0ZXJPZmZzZXQgPSBpdC5tX2NoYXJhY3RlckluZGV4T2ZHbHlwaFtnbHlw
aFBvc2l0aW9uXTsKLSAgICAgICAgICAgIGZsb2F0IGdseXBoV2lkdGggPSBnbHlwaEJ1ZmZlci5h
ZHZhbmNlQXQoZ2x5cGhQb3NpdGlvbikud2lkdGgoKTsKKyAgICAgICAgICAgIGZsb2F0IGdseXBo
V2lkdGggPSBnbHlwaEJ1ZmZlci0+YWR2YW5jZUF0KGdseXBoUG9zaXRpb24pLndpZHRoKCk7CiAg
ICAgICAgICAgICBpZiAoaW5jbHVkZVBhcnRpYWxHbHlwaHMpIHsKICAgICAgICAgICAgICAgICBp
ZiAoY3VycmVudFggLSBnbHlwaFdpZHRoIC8gMi4wZiA8PSB4KQogICAgICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTM1MSwxMyArMzUxLDEzIEBAIGludCBGb250OjpvZmZzZXRGb3JQb3NpdGlv
bkZvclNpbXBsZVRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBmbG9hdCB4LCBib29sIGluY2x1CiAg
ICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBmbG9hdCBjdXJyZW50WCA9IDA7Ci0gICAg
ICAgIGZvciAoaW50IGdseXBoUG9zaXRpb24gPSAwOyBnbHlwaFBvc2l0aW9uIDw9IGdseXBoQnVm
ZmVyLnNpemUoKTsgKytnbHlwaFBvc2l0aW9uKSB7Ci0gICAgICAgICAgICBpZiAoZ2x5cGhQb3Np
dGlvbiA9PSBnbHlwaEJ1ZmZlci5zaXplKCkpIHsKKyAgICAgICAgZm9yIChpbnQgZ2x5cGhQb3Np
dGlvbiA9IDA7IGdseXBoUG9zaXRpb24gPD0gZ2x5cGhCdWZmZXItPnNpemUoKTsgKytnbHlwaFBv
c2l0aW9uKSB7CisgICAgICAgICAgICBpZiAoZ2x5cGhQb3NpdGlvbiA9PSBnbHlwaEJ1ZmZlci0+
c2l6ZSgpKSB7CiAgICAgICAgICAgICAgICAgY2hhcmFjdGVyT2Zmc2V0ID0gcnVuLmxlbmd0aCgp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2hh
cmFjdGVyT2Zmc2V0ID0gaXQubV9jaGFyYWN0ZXJJbmRleE9mR2x5cGhbZ2x5cGhQb3NpdGlvbl07
Ci0gICAgICAgICAgICBmbG9hdCBnbHlwaFdpZHRoID0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGds
eXBoUG9zaXRpb24pLndpZHRoKCk7CisgICAgICAgICAgICBmbG9hdCBnbHlwaFdpZHRoID0gZ2x5
cGhCdWZmZXItPmFkdmFuY2VBdChnbHlwaFBvc2l0aW9uKS53aWR0aCgpOwogICAgICAgICAgICAg
aWYgKGluY2x1ZGVQYXJ0aWFsR2x5cGhzKSB7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRY
ICsgZ2x5cGhXaWR0aCAvIDIuMGYgPj0geCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udENvbXBs
ZXhUZXh0TWFjLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q29tcGxleFRleHRNYWMuY3BwCmluZGV4IDgyYWNmZmE4NWYxZjA0YzYyYjQ5NzE3NjY1Yjc1ODcy
ZmJhMjI3ZmUuLmUzM2E1OWNmZDgyNmY5MDVkZjYyZmQ3MzdmN2IwZTI0ZTI2NDYyNWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250Q29tcGxleFRl
eHRNYWMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250
Q29tcGxleFRleHRNYWMuY3BwCkBAIC04MCwzMCArODAsMzAgQEAgZmxvYXQgRm9udDo6Z2V0R2x5
cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChjb25zdCBUZXh0UnVuJiBydW4sIGludCBmcm9t
LCBpbnQKIGZsb2F0IEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFRleHRSdW4mIHJ1biwgY29uc3QgRmxvYXRQb2ludCYgcG9pbnQsIGludCBmcm9t
LCBpbnQgdG8pIGNvbnN0CiB7CiAgICAgLy8gVGhpcyBnbHlwaCBidWZmZXIgaG9sZHMgb3VyIGds
eXBocyArIGFkdmFuY2VzICsgZm9udCBkYXRhIGZvciBlYWNoIGdseXBoLgotICAgIEdseXBoQnVm
ZmVyIGdseXBoQnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHbHlwaEJ1ZmZlcj4gZ2x5cGhC
dWZmZXIobmV3IEdseXBoQnVmZmVyKCkpOwogCi0gICAgZmxvYXQgc3RhcnRYID0gcG9pbnQueCgp
ICsgZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlw
aEJ1ZmZlcik7CisgICAgZmxvYXQgc3RhcnRYID0gcG9pbnQueCgpICsgZ2V0R2x5cGhzQW5kQWR2
YW5jZXNGb3JDb21wbGV4VGV4dChydW4sIGZyb20sIHRvLCAqZ2x5cGhCdWZmZXIpOwogCiAgICAg
Ly8gV2UgY291bGRuJ3QgZ2VuZXJhdGUgYW55IGdseXBocyBmb3IgdGhlIHJ1bi4gIEdpdmUgdXAu
Ci0gICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKKyAgICBpZiAoZ2x5cGhCdWZmZXItPmlz
RW1wdHkoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBEcmF3IHRoZSBnbHlwaCBidWZm
ZXIgbm93IGF0IHRoZSBzdGFydGluZyBwb2ludCByZXR1cm5lZCBpbiBzdGFydFguCiAgICAgRmxv
YXRQb2ludCBzdGFydFBvaW50KHN0YXJ0WCwgcG9pbnQueSgpKTsKLSAgICBkcmF3R2x5cGhCdWZm
ZXIoY29udGV4dCwgcnVuLCBnbHlwaEJ1ZmZlciwgc3RhcnRQb2ludCk7CisgICAgZHJhd0dseXBo
QnVmZmVyKGNvbnRleHQsIHJ1biwgKmdseXBoQnVmZmVyLCBzdGFydFBvaW50KTsKIAogICAgIHJl
dHVybiBzdGFydFBvaW50LngoKSAtIHN0YXJ0WDsKIH0KIAogdm9pZCBGb250OjpkcmF3RW1waGFz
aXNNYXJrc0ZvckNvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBBdG9taWNTdHJpbmcmIG1hcmssIGNvbnN0IEZsb2F0UG9pbnQmIHBv
aW50LCBpbnQgZnJvbSwgaW50IHRvKSBjb25zdAogewotICAgIEdseXBoQnVmZmVyIGdseXBoQnVm
ZmVyOwotICAgIGZsb2F0IGluaXRpYWxBZHZhbmNlID0gZ2V0R2x5cGhzQW5kQWR2YW5jZXNGb3JD
b21wbGV4VGV4dChydW4sIGZyb20sIHRvLCBnbHlwaEJ1ZmZlciwgRm9yVGV4dEVtcGhhc2lzKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8R2x5cGhCdWZmZXI+IGdseXBoQnVmZmVyKG5ldyBHbHlwaEJ1
ZmZlcigpKTsKKyAgICBmbG9hdCBpbml0aWFsQWR2YW5jZSA9IGdldEdseXBoc0FuZEFkdmFuY2Vz
Rm9yQ29tcGxleFRleHQocnVuLCBmcm9tLCB0bywgKmdseXBoQnVmZmVyLCBGb3JUZXh0RW1waGFz
aXMpOwogCi0gICAgaWYgKGdseXBoQnVmZmVyLmlzRW1wdHkoKSkKKyAgICBpZiAoZ2x5cGhCdWZm
ZXItPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZHJhd0VtcGhhc2lzTWFya3Mo
Y29udGV4dCwgcnVuLCBnbHlwaEJ1ZmZlciwgbWFyaywgRmxvYXRQb2ludChwb2ludC54KCkgKyBp
bml0aWFsQWR2YW5jZSwgcG9pbnQueSgpKSk7CisgICAgZHJhd0VtcGhhc2lzTWFya3MoY29udGV4
dCwgcnVuLCAqZ2x5cGhCdWZmZXIsIG1hcmssIEZsb2F0UG9pbnQocG9pbnQueCgpICsgaW5pdGlh
bEFkdmFuY2UsIHBvaW50LnkoKSkpOwogfQogCiBmbG9hdCBGb250OjpmbG9hdFdpZHRoRm9yQ29t
cGxleFRleHQoY29uc3QgVGV4dFJ1biYgcnVuLCBIYXNoU2V0PGNvbnN0IFNpbXBsZUZvbnREYXRh
Kj4qIGZhbGxiYWNrRm9udHMsIEdseXBoT3ZlcmZsb3cqIGdseXBoT3ZlcmZsb3cpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tCmluZGV4
IGVhZTNiMDc0YzM4NGE5N2JmMzA0ZjQyNjVmYzc5NDRiZmU5M2E0OTAuLjUxMzUzYThlYmU5ZTYy
YjNjMmIwOTE2NzVlZjBlMzY1YTIyYjkwZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tCkBAIC00MzksMjMgKzQzOSwyMyBAQCBzdGF0aWMg
dm9pZCBmaW5kUGF0aEludGVyc2VjdGlvbnModm9pZCogc3RhdGVBc1ZvaWRQb2ludGVyLCBjb25z
dCBDR1BhdGhFbGVtZW50KgogRGFzaEFycmF5IEZvbnQ6OmRhc2hlc0ZvckludGVyc2VjdGlvbnNX
aXRoUmVjdChjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4s
IGNvbnN0IEZsb2F0UmVjdCYgbGluZUV4dGVudHMpIGNvbnN0CiB7CiAgICAgZmxvYXQgZGVsdGFY
OwotICAgIEdseXBoQnVmZmVyIGdseXBoQnVmZmVyOworICAgIHN0ZDo6dW5pcXVlX3B0cjxHbHlw
aEJ1ZmZlcj4gZ2x5cGhCdWZmZXIobmV3IEdseXBoQnVmZmVyKCkpOwogICAgIGlmIChjb2RlUGF0
aChydW4pICE9IENvbXBsZXgpCi0gICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2Vz
Rm9yU2ltcGxlVGV4dChydW4sIDAsIHJ1bi5sZW5ndGgoKSwgZ2x5cGhCdWZmZXIpOworICAgICAg
ICBkZWx0YVggPSBnZXRHbHlwaHNBbmRBZHZhbmNlc0ZvclNpbXBsZVRleHQocnVuLCAwLCBydW4u
bGVuZ3RoKCksICpnbHlwaEJ1ZmZlcik7CiAgICAgZWxzZQotICAgICAgICBkZWx0YVggPSBnZXRH
bHlwaHNBbmRBZHZhbmNlc0ZvckNvbXBsZXhUZXh0KHJ1biwgMCwgcnVuLmxlbmd0aCgpLCBnbHlw
aEJ1ZmZlcik7CisgICAgICAgIGRlbHRhWCA9IGdldEdseXBoc0FuZEFkdmFuY2VzRm9yQ29tcGxl
eFRleHQocnVuLCAwLCBydW4ubGVuZ3RoKCksICpnbHlwaEJ1ZmZlcik7CiAgICAgQ0dBZmZpbmVU
cmFuc2Zvcm0gdHJhbnNsYXRpb24gPSBDR0FmZmluZVRyYW5zZm9ybU1ha2VUcmFuc2xhdGlvbih0
ZXh0T3JpZ2luLngoKSArIGRlbHRhWCwgdGV4dE9yaWdpbi55KCkpOwogICAgIHRyYW5zbGF0aW9u
ID0gQ0dBZmZpbmVUcmFuc2Zvcm1TY2FsZSh0cmFuc2xhdGlvbiwgMSwgLTEpOwogICAgIERhc2hB
cnJheSByZXN1bHQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBnbHlwaEJ1ZmZlci5zaXplKCk7
ICsraSkgeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ2x5cGhCdWZmZXItPnNpemUoKTsgKytp
KSB7CiAgICAgICAgIEdseXBoSXRlcmF0aW9uU3RhdGUgaW5mbyA9IEdseXBoSXRlcmF0aW9uU3Rh
dGUoQ0dQb2ludE1ha2UoMCwgMCksIENHUG9pbnRNYWtlKDAsIDApLCBsaW5lRXh0ZW50cy55KCks
IGxpbmVFeHRlbnRzLnkoKSArIGxpbmVFeHRlbnRzLmhlaWdodCgpLCBsaW5lRXh0ZW50cy54KCkg
KyBsaW5lRXh0ZW50cy53aWR0aCgpLCBsaW5lRXh0ZW50cy54KCkpOwotICAgICAgICBSZXRhaW5Q
dHI8Q0dQYXRoUmVmPiBwYXRoID0gYWRvcHRDRihDVEZvbnRDcmVhdGVQYXRoRm9yR2x5cGgoZ2x5
cGhCdWZmZXIuZm9udERhdGFBdChpKS0+cGxhdGZvcm1EYXRhKCkuY3RGb250KCksIGdseXBoQnVm
ZmVyLmdseXBoQXQoaSksICZ0cmFuc2xhdGlvbikpOworICAgICAgICBSZXRhaW5QdHI8Q0dQYXRo
UmVmPiBwYXRoID0gYWRvcHRDRihDVEZvbnRDcmVhdGVQYXRoRm9yR2x5cGgoZ2x5cGhCdWZmZXIt
PmZvbnREYXRhQXQoaSktPnBsYXRmb3JtRGF0YSgpLmN0Rm9udCgpLCBnbHlwaEJ1ZmZlci0+Z2x5
cGhBdChpKSwgJnRyYW5zbGF0aW9uKSk7CiAgICAgICAgIENHUGF0aEFwcGx5KHBhdGguZ2V0KCks
ICZpbmZvLCAmZmluZFBhdGhJbnRlcnNlY3Rpb25zKTsKICAgICAgICAgaWYgKGluZm8ubWluWCA8
IGluZm8ubWF4WCkgewogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpbmZvLm1pblggLSBsaW5l
RXh0ZW50cy54KCkpOwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpbmZvLm1heFggLSBsaW5l
RXh0ZW50cy54KCkpOwogICAgICAgICB9Ci0gICAgICAgIEdseXBoQnVmZmVyQWR2YW5jZSBhZHZh
bmNlID0gZ2x5cGhCdWZmZXIuYWR2YW5jZUF0KGkpOworICAgICAgICBHbHlwaEJ1ZmZlckFkdmFu
Y2UgYWR2YW5jZSA9IGdseXBoQnVmZmVyLT5hZHZhbmNlQXQoaSk7CiAgICAgICAgIHRyYW5zbGF0
aW9uID0gQ0dBZmZpbmVUcmFuc2Zvcm1UcmFuc2xhdGUodHJhbnNsYXRpb24sIGFkdmFuY2Uud2lk
dGgoKSwgYWR2YW5jZS5oZWlnaHQoKSk7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1RleHRNZXRyaWNzQnVpbGRl
ci5jcHAKaW5kZXggODYwMDllNmU5MTNlYmE2YmE3NTljOGE0ZjkzN2U5YTk4M2YxOWZkZC4uYzI0
MzhiZGQxYjMwYmViZjRiNWZkNDkxYzdmMjVmMjAxNDg2Njc2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0TWV0cmljc0J1aWxkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dE1ldHJpY3NCdWlsZGVyLmNwcApAQCAt
NTgsOCArNTgsOCBAQCBib29sIFNWR1RleHRNZXRyaWNzQnVpbGRlcjo6YWR2YW5jZSgpCiAKIHZv
aWQgU1ZHVGV4dE1ldHJpY3NCdWlsZGVyOjphZHZhbmNlU2ltcGxlVGV4dCgpCiB7Ci0gICAgR2x5
cGhCdWZmZXIgZ2x5cGhCdWZmZXI7Ci0gICAgdW5zaWduZWQgbWV0cmljc0xlbmd0aCA9IG1fc2lt
cGxlV2lkdGhJdGVyYXRvci0+YWR2YW5jZShtX3RleHRQb3NpdGlvbiArIDEsICZnbHlwaEJ1ZmZl
cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdseXBoQnVmZmVyPiBnbHlwaEJ1ZmZlcihuZXcgR2x5
cGhCdWZmZXIoKSk7CisgICAgdW5zaWduZWQgbWV0cmljc0xlbmd0aCA9IG1fc2ltcGxlV2lkdGhJ
dGVyYXRvci0+YWR2YW5jZShtX3RleHRQb3NpdGlvbiArIDEsIGdseXBoQnVmZmVyLmdldCgpKTsK
ICAgICBpZiAoIW1ldHJpY3NMZW5ndGgpIHsKICAgICAgICAgbV9jdXJyZW50TWV0cmljcyA9IFNW
R1RleHRNZXRyaWNzKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggM2IyNTYxYWY4YzE2MGRmM2JiZTkyYjAzM2U4YWYzNTgyY2MwOTE2Mi4uZGUxODRjODU1Y2Y4
OTE4M2RlYzg0NzcyZmM5YmM1YWFjNmQ5ZTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdUZXh0UnVuUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAg
LTU1LDggKzU1LDggQEAgc3RhdGljIGlubGluZSBjb25zdCBTVkdGb250RGF0YSogc3ZnRm9udEFu
ZEZvbnRGYWNlRWxlbWVudEZvckZvbnREYXRhKGNvbnN0IFNpbXAKIGZsb2F0IFNWR1RleHRSdW5S
ZW5kZXJpbmdDb250ZXh0OjpmbG9hdFdpZHRoVXNpbmdTVkdGb250KGNvbnN0IEZvbnQmIGZvbnQs
IGNvbnN0IFRleHRSdW4mIHJ1biwgaW50JiBjaGFyc0NvbnN1bWVkLCBTdHJpbmcmIGdseXBoTmFt
ZSkgY29uc3QKIHsKICAgICBXaWR0aEl0ZXJhdG9yIGl0KCZmb250LCBydW4pOwotICAgIEdseXBo
QnVmZmVyIGdseXBoQnVmZmVyOwotICAgIGNoYXJzQ29uc3VtZWQgKz0gaXQuYWR2YW5jZShydW4u
bGVuZ3RoKCksICZnbHlwaEJ1ZmZlcik7CisgICAgc3RkOjp1bmlxdWVfcHRyPEdseXBoQnVmZmVy
PiBnbHlwaEJ1ZmZlcihuZXcgR2x5cGhCdWZmZXIoKSk7CisgICAgY2hhcnNDb25zdW1lZCArPSBp
dC5hZHZhbmNlKHJ1bi5sZW5ndGgoKSwgZ2x5cGhCdWZmZXIuZ2V0KCkpOwogICAgIGdseXBoTmFt
ZSA9IGl0Lmxhc3RHbHlwaE5hbWUoKTsKICAgICByZXR1cm4gaXQucnVuV2lkdGhTb0ZhcigpOwog
fQo=
</data>
<flag name="review"
          id="247190"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>