<?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>62441</bug_id>
          
          <creation_ts>2011-06-10 01:49:57 -0700</creation_ts>
          <short_desc>Add glyph table to SVGFontElement mapping between SVGGlyph &lt;-&gt; Glyph</short_desc>
          <delta_ts>2011-06-10 13:20:11 -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>SVG</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>
          
          <blocked>59085</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>kling</cc>
    
    <cc>krit</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>418590</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-10 01:49:57 -0700</bug_when>
    <thetext>Add glyph table to SVGFontElement mapping between SVGGlyph &lt;-&gt; Glyph.
This is a preparation patch 1 for bug 59085.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418591</commentid>
    <comment_count>1</comment_count>
      <attachid>96715</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-10 01:53:37 -0700</bug_when>
    <thetext>Created attachment 96715
Patch

The first prep patch splitted off from bug 59085.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418719</commentid>
    <comment_count>2</comment_count>
      <attachid>96715</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-06-10 08:54:09 -0700</bug_when>
    <thetext>Comment on attachment 96715
Patch

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

LGTM

&gt; Source/WebCore/svg/SVGGlyphMap.h:53
&gt; +    void add(const String&amp; string, const SVGGlyph&amp; glyph)

Can you try to give a more descriptive name than add?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418860</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-10 13:20:11 -0700</bug_when>
    <thetext>Thanks, landed in r88557.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96715</attachid>
            <date>2011-06-10 01:53:37 -0700</date>
            <delta_ts>2011-06-10 08:54:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>PrepPatch1-v1.diff</filename>
            <type>text/plain</type>
            <size>19254</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4NTI5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDYtMTAgIE5pa29sYXMg
WmltbWVybWFubiAgPG56aW1tZXJtYW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW50ZWdyYXRlIFNWRyBGb250cyB3aXRoaW4gR2x5
cGhQYWdlIGNvbmNlcHQsIHJlbW92aW5nIHRoZSBzcGVjaWFsIFNWRyBjb2RlIHBhdGhzIGZyb20g
Rm9udCwgbWFraW5nIGl0IHBvc3NpYmxlIHRvIHJldXNlIHRoZSBzaW1wbGUgdGV4dCBjb2RlIHBh
dGggZm9yIFNWRyBGb250cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTkwODUKKworICAgICAgICBBZGQgZ2x5cGggdGFibGUgdG8gU1ZHRm9udEVsZW1l
bnQgbWFwcGluZyBiZXR3ZWVuIFNWR0dseXBoIDwtPiBHbHlwaAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI0NDEKKworICAgICAgICBQcmVwYXJhdGlv
biBwYXRjaCAxOiBJbnRyb2R1Y2UgdGhlIGludGVybmFsIGdseXBoIHRhYmxlIGluIFNWR0dseXBo
TWFwIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGlkZW50aWZ5IGVhY2gKKyAgICAgICAgU1ZHR2x5cGgg
aWRlbnRpZmllciB3aXRoIGEgR2x5cGggKHdoaWNoIGlzIGp1c3QgYW4gdXNob3J0KS4gSXQgd2ls
bCBiZSB1c2VkIGJ5IGZvbGxvdy11cCBwYXRjaGVzLgorCisgICAgICAgIERvZXNuJ3QgYWZmZWN0
IGFueSB0ZXN0IHNvIGZhci4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1NWR0dseXBo
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaDo6U1ZHR2x5cGgpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHR2x5cGg6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZH
VGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVGV4dFJ1
bldhbGtlcjo6d2Fsayk6CisgICAgICAgICogc3ZnL1NWR0ZvbnREYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZvbnREYXRhOjppbml0aWFsaXplRm9udERhdGEpOgorICAgICAgICAqIHN2
Zy9TVkdGb250RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb250RWxlbWVudDo6
U1ZHRm9udEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEVsZW1lbnQ6OnJlZ2lz
dGVyTGlnYXR1cmVzSW5HbHlwaENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVt
ZW50OjplbnN1cmVHbHlwaENhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6Omtlcm5pbmdGb3JQYWly
T2ZTdHJpbmdzQW5kR2x5cGhzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvbnRFbGVtZW50Ojpo
b3Jpem9udGFsS2VybmluZ0ZvclBhaXJPZlN0cmluZ3NBbmRHbHlwaHMpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRm9udEVsZW1lbnQ6OnZlcnRpY2FsS2VybmluZ0ZvclBhaXJPZlN0cmluZ3NBbmRH
bHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEVsZW1lbnQ6OmNvbGxlY3RHbHlwaHNG
b3JTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEVsZW1lbnQ6OmNvbGxlY3RHbHlw
aHNGb3JHbHlwaE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEVsZW1lbnQ6OnN2Z0ds
eXBoRm9yR2x5cGgpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9udEVsZW1lbnQ6Om1pc3NpbmdH
bHlwaCk6CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdLZXJuaW5nUGFpcjo6U1ZHS2VybmluZ1BhaXIpOgorICAgICAgICAqIHN2Zy9TVkdHbHlw
aE1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR2x5cGhNYXA6OmFkZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdHbHlwaE1hcDo6YWRkTmFtZWRHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdHbHlwaE1hcDo6YXBwZW5kVG9HbHlwaFRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ds
eXBoTWFwOjpjb2xsZWN0R2x5cGhzRm9yU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ds
eXBoTWFwOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaE1hcDo6c3ZnR2x5cGhG
b3JHbHlwaCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdHbHlwaE1hcDo6Z2x5cGhJZGVudGlmaWVy
Rm9yR2x5cGhOYW1lKToKKwogMjAxMS0wNi0wOSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1NWR0dseXBoLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU1ZHR2x5cGguaAkocmV2aXNpb24gODg1MjApCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TVkdHbHlwaC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIFNWR0dseXBoX2gKIAogI2lmIEVOQUJMRShT
VkdfRk9OVFMpCisjaW5jbHVkZSAiR2x5cGguaCIKICNpbmNsdWRlICJQYXRoLmgiCiAKICNpbmNs
dWRlIDxsaW1pdHM+CkBAIC01NCw2ICs1NSw3IEBAIHN0cnVjdCBTVkdHbHlwaCB7CiAgICAgICAg
ICwgb3JpZW50YXRpb24oQm90aCkKICAgICAgICAgLCBhcmFiaWNGb3JtKE5vbmUpCiAgICAgICAg
ICwgcHJpb3JpdHkoMCkKKyAgICAgICAgLCB0YWJsZUVudHJ5KDApCiAgICAgICAgICwgdW5pY29k
ZVN0cmluZ0xlbmd0aCgwKQogICAgICAgICAsIGhvcml6b250YWxBZHZhbmNlWCgwKQogICAgICAg
ICAsIHZlcnRpY2FsT3JpZ2luWCgwKQpAQCAtNzQsNiArNzYsNyBAQCBzdHJ1Y3QgU1ZHR2x5cGgg
ewogICAgICAgICByZXR1cm4gaXNWYWxpZCA9PSBvdGhlci5pc1ZhbGlkCiAgICAgICAgICAgICAm
JiBvcmllbnRhdGlvbiA9PSBvdGhlci5vcmllbnRhdGlvbgogICAgICAgICAgICAgJiYgYXJhYmlj
Rm9ybSA9PSBvdGhlci5hcmFiaWNGb3JtCisgICAgICAgICAgICAmJiB0YWJsZUVudHJ5ID09IG90
aGVyLnRhYmxlRW50cnkKICAgICAgICAgICAgICYmIHVuaWNvZGVTdHJpbmdMZW5ndGggPT0gb3Ro
ZXIudW5pY29kZVN0cmluZ0xlbmd0aAogICAgICAgICAgICAgJiYgZ2x5cGhOYW1lID09IG90aGVy
LmdseXBoTmFtZQogICAgICAgICAgICAgJiYgaG9yaXpvbnRhbEFkdmFuY2VYID09IG90aGVyLmhv
cml6b250YWxBZHZhbmNlWApAQCAtODgsNiArOTEsNyBAQCBzdHJ1Y3QgU1ZHR2x5cGggewogICAg
IHVuc2lnbmVkIG9yaWVudGF0aW9uIDogMjsgLy8gT3JpZW50YXRpb24KICAgICB1bnNpZ25lZCBh
cmFiaWNGb3JtIDogMzsgLy8gQXJhYmljRm9ybQogICAgIGludCBwcmlvcml0eTsKKyAgICBHbHlw
aCB0YWJsZUVudHJ5OwogICAgIHNpemVfdCB1bmljb2RlU3RyaW5nTGVuZ3RoOwogICAgIFN0cmlu
ZyBnbHlwaE5hbWU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4
dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0NvbnRleHQuY3BwCShyZXZpc2lvbiA4ODUy
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHVGV4dFJ1blJlbmRlcmluZ0Nv
bnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTIsNyArMTUyLDcgQEAgc3RydWN0IFNWR1Rl
eHRSdW5XYWxrZXIgewogICAgICAgICAgICAgaWYgKGhhdmVBbHRHbHlwaCkKICAgICAgICAgICAg
ICAgICBnbHlwaHMuYXBwZW5kKGFsdEdseXBoSWRlbnRpZmllcik7CiAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgbV9mb250RWxlbWVudC0+Z2V0R2x5cGhJZGVudGlmaWVyc0ZvclN0
cmluZyhsb29rdXBTdHJpbmcsIGdseXBocyk7CisgICAgICAgICAgICAgICAgbV9mb250RWxlbWVu
dC0+Y29sbGVjdEdseXBoc0ZvclN0cmluZyhsb29rdXBTdHJpbmcsIGdseXBocyk7CiAKICAgICAg
ICAgICAgIFZlY3RvcjxTVkdHbHlwaD46Oml0ZXJhdG9yIGl0ID0gZ2x5cGhzLmJlZ2luKCk7CiAg
ICAgICAgICAgICBWZWN0b3I8U1ZHR2x5cGg+OjppdGVyYXRvciBlbmQgPSBnbHlwaHMuZW5kKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9udERhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb250RGF0YS5jcHAJKHJldmlzaW9uIDg4NTIwKQorKysg
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvbnREYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTks
NyArNTksNyBAQCB2b2lkIFNWR0ZvbnREYXRhOjppbml0aWFsaXplRm9udERhdGEoU2ltCiAgICAg
aWYgKCF4SGVpZ2h0KSB7CiAgICAgICAgIC8vIEZhbGxiYWNrIGlmIHhfaGVpZ2h0QXR0ciBpcyBu
b3Qgc3BlY2lmaWVkIGZvciB0aGUgZm9udCBlbGVtZW50LgogICAgICAgICBWZWN0b3I8U1ZHR2x5
cGg+IGxldHRlclhHbHlwaHM7Ci0gICAgICAgIGFzc29jaWF0ZWRGb250RWxlbWVudC0+Z2V0R2x5
cGhJZGVudGlmaWVyc0ZvclN0cmluZyhTdHJpbmcoIngiLCAxKSwgbGV0dGVyWEdseXBocyk7Cisg
ICAgICAgIGFzc29jaWF0ZWRGb250RWxlbWVudC0+Y29sbGVjdEdseXBoc0ZvclN0cmluZyhTdHJp
bmcoIngiLCAxKSwgbGV0dGVyWEdseXBocyk7CiAgICAgICAgIHhIZWlnaHQgPSBsZXR0ZXJYR2x5
cGhzLmlzRW1wdHkoKSA/IDIgKiBhc2NlbnQgLyAzIDogbGV0dGVyWEdseXBocy5maXJzdCgpLmhv
cml6b250YWxBZHZhbmNlWCAqIHNjYWxlOwogICAgIH0KIApAQCAtNzIsMTUgKzcyLDE1IEBAIHZv
aWQgU1ZHRm9udERhdGE6OmluaXRpYWxpemVGb250RGF0YShTaW0KICAgICBmb250TWV0cmljcy5z
ZXRYSGVpZ2h0KHhIZWlnaHQpOwogCiAgICAgVmVjdG9yPFNWR0dseXBoPiBzcGFjZUdseXBoczsK
LSAgICBhc3NvY2lhdGVkRm9udEVsZW1lbnQtPmdldEdseXBoSWRlbnRpZmllcnNGb3JTdHJpbmco
U3RyaW5nKCIgIiwgMSksIHNwYWNlR2x5cGhzKTsKKyAgICBhc3NvY2lhdGVkRm9udEVsZW1lbnQt
PmNvbGxlY3RHbHlwaHNGb3JTdHJpbmcoU3RyaW5nKCIgIiwgMSksIHNwYWNlR2x5cGhzKTsKICAg
ICBmb250RGF0YS0+c2V0U3BhY2VXaWR0aChzcGFjZUdseXBocy5pc0VtcHR5KCkgPyB4SGVpZ2h0
IDogc3BhY2VHbHlwaHMuZmlyc3QoKS5ob3Jpem9udGFsQWR2YW5jZVggKiBzY2FsZSk7CiAKICAg
ICBWZWN0b3I8U1ZHR2x5cGg+IG51bWVyYWxaZXJvR2x5cGhzOwotICAgIGFzc29jaWF0ZWRGb250
RWxlbWVudC0+Z2V0R2x5cGhJZGVudGlmaWVyc0ZvclN0cmluZyhTdHJpbmcoIjAiLCAxKSwgbnVt
ZXJhbFplcm9HbHlwaHMpOworICAgIGFzc29jaWF0ZWRGb250RWxlbWVudC0+Y29sbGVjdEdseXBo
c0ZvclN0cmluZyhTdHJpbmcoIjAiLCAxKSwgbnVtZXJhbFplcm9HbHlwaHMpOwogICAgIGZvbnRE
YXRhLT5zZXRBdmdDaGFyV2lkdGgobnVtZXJhbFplcm9HbHlwaHMuaXNFbXB0eSgpID8gZm9udERh
dGEtPnNwYWNlV2lkdGgoKSA6IG51bWVyYWxaZXJvR2x5cGhzLmZpcnN0KCkuaG9yaXpvbnRhbEFk
dmFuY2VYICogc2NhbGUpOwogCiAgICAgVmVjdG9yPFNWR0dseXBoPiBsZXR0ZXJXR2x5cGhzOwot
ICAgIGFzc29jaWF0ZWRGb250RWxlbWVudC0+Z2V0R2x5cGhJZGVudGlmaWVyc0ZvclN0cmluZyhT
dHJpbmcoIlciLCAxKSwgbGV0dGVyV0dseXBocyk7CisgICAgYXNzb2NpYXRlZEZvbnRFbGVtZW50
LT5jb2xsZWN0R2x5cGhzRm9yU3RyaW5nKFN0cmluZygiVyIsIDEpLCBsZXR0ZXJXR2x5cGhzKTsK
ICAgICBmb250RGF0YS0+c2V0TWF4Q2hhcldpZHRoKGxldHRlcldHbHlwaHMuaXNFbXB0eSgpID8g
YXNjZW50IDogbGV0dGVyV0dseXBocy5maXJzdCgpLmhvcml6b250YWxBZHZhbmNlWCAqIHNjYWxl
KTsKIAogICAgIC8vIEZJWE1FOiBpcyB0aGVyZSBhIHdheSB3ZSBjYW4gZ2V0IHRoZSBzcGFjZSBn
bHlwaCBmcm9tIHRoZSBTVkdHbHlwaCBhYm92ZT8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGb250RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zv
bnRFbGVtZW50LmNwcAkocmV2aXNpb24gODg1MjApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9udEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIERFRklORV9B
TklNQVRFRF9CT09MRUFOKFNWR0ZvbnRFbGVtZW50LCAKIAogaW5saW5lIFNWR0ZvbnRFbGVtZW50
OjpTVkdGb250RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSAKKyAg
ICAsIG1fbWlzc2luZ0dseXBoKDApCiAgICAgLCBtX2lzR2x5cGhDYWNoZVZhbGlkKGZhbHNlKQog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmb250VGFnKSk7CkBAIC03OSwyNiAr
ODAsOTQgQEAgU1ZHTWlzc2luZ0dseXBoRWxlbWVudCogU1ZHRm9udEVsZW1lbnQ6OgogICAgIHJl
dHVybiAwOwogfQogCi12b2lkIFNWR0ZvbnRFbGVtZW50OjplbnN1cmVHbHlwaENhY2hlKCkgY29u
c3QKK3ZvaWQgU1ZHRm9udEVsZW1lbnQ6OnJlZ2lzdGVyTGlnYXR1cmVzSW5HbHlwaENhY2hlKFZl
Y3RvcjxTdHJpbmc+JiBsaWdhdHVyZXMpCit7CisgICAgQVNTRVJUKCFsaWdhdHVyZXMuaXNFbXB0
eSgpKTsKKworICAgIC8vIFJlZ2lzdGVyIGVhY2ggY2hhcmFjdGVyIG9mIGEgbGlnYXR1cmUgaW4g
dGhlIG1hcCwgaWYgbm90IHByZXNlbnQuCisgICAgLy8gRWcuIElmIG9ubHkgYSAiZmkiIGxpZ2F0
dXJlIGlzIHByZXNlbnQsIGJ1dCBub3QgImYiIGFuZCAiaSIsIHRoZQorICAgIC8vIEdseXBoUGFn
ZSB3aWxsIG5vdCBjb250YWluIGFueSBlbnRyaWVzIGZvciAiZiIgYW5kICJpIiwgc28gdGhlCisg
ICAgLy8gU1ZHRm9udCBpcyBub3QgdXNlZCB0byByZW5kZXIgdGhlIHRleHQgImZpMTIzNCIuIFJl
Z2lzdGVyIGFuCisgICAgLy8gZW1wdHkgU1ZHR2x5cGggd2l0aCB0aGUgY2hhcmFjdGVyLCBzbyB0
aGUgU1ZHIEZvbnQgd2lsbCBiZSB1c2VkCisgICAgLy8gdG8gcmVuZGVyIHRoZSB0ZXh0LiBJZiBz
b21lb25lIHRyaWVzIHRvIHJlbmRlciAiZjIiIHRoZSBTVkcgRm9udAorICAgIC8vIHdpbGwgbm90
IGJlIGFibGUgdG8gZmluZCBhIGdseXBoIGZvciAiZiIsIGJ1dCBoYW5kbGVzIHRoZSBmYWxsYmFj
aworICAgIC8vIGNoYXJhY3RlciBzdWJzdGl0dXRpb24gcHJvcGVybHkgdGhyb3VnaCBnbHlwaERh
dGFGb3JDaGFyYWN0ZXIoKS4KKyAgICBWZWN0b3I8U1ZHR2x5cGg+IGdseXBoczsKKyAgICBzaXpl
X3QgbGlnYXR1cmVzU2l6ZSA9IGxpZ2F0dXJlcy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsaWdhdHVyZXNTaXplOyArK2kpIHsKKyAgICAgICAgY29uc3QgU3RyaW5nJiB1bmlj
b2RlID0gbGlnYXR1cmVzW2ldOworCisgICAgICAgIHVuc2lnbmVkIHVuaWNvZGVMZW5ndGggPSB1
bmljb2RlLmxlbmd0aCgpOworICAgICAgICBBU1NFUlQodW5pY29kZUxlbmd0aCA+IDEpOworCisg
ICAgICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gdW5pY29kZS5jaGFyYWN0ZXJzKCk7Cisg
ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCB1bmljb2RlTGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIFN0cmluZyBsb29rdXBTdHJpbmcoY2hhcmFjdGVycyArIGksIDEpOworICAgICAg
ICAgICAgbV9nbHlwaE1hcC5jb2xsZWN0R2x5cGhzRm9yU3RyaW5nKGxvb2t1cFN0cmluZywgZ2x5
cGhzKTsKKyAgICAgICAgICAgIGlmICghZ2x5cGhzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgIGdseXBocy5jbGVhcigpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gVGhpcyBnbHlwaCBpcyBuZXZl
ciBtZWFudCB0byBiZSB1c2VkIGZvciByZW5kZXJpbmcsIG9ubHkgYXMgaWRlbnRpZmllciBhcyBh
IHBhcnQgb2YgYSBsaWdhdHVyZS4KKyAgICAgICAgICAgIFNWR0dseXBoIG5ld0dseXBoUGFydDsK
KyAgICAgICAgICAgIC8qIEZJWE1FOiBFbmFibGUgdGhpcyBvbmNlIHdpdGggdGhlIG5leHQgcGF0
Y2guCisgICAgICAgICAgICBuZXdHbHlwaFBhcnQuaXNQYXJ0T2ZMaWdhdHVyZSA9IHRydWU7Cisg
ICAgICAgICAgICAqLworICAgICAgICAgICAgbV9nbHlwaE1hcC5hZGQobG9va3VwU3RyaW5nLCBu
ZXdHbHlwaFBhcnQpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFNWR0ZvbnRFbGVtZW50
OjplbnN1cmVHbHlwaENhY2hlKCkKIHsKICAgICBpZiAobV9pc0dseXBoQ2FjaGVWYWxpZCkKICAg
ICAgICAgcmV0dXJuOwogCisgICAgU1ZHTWlzc2luZ0dseXBoRWxlbWVudCogZmlyc3RNaXNzaW5n
R2x5cGhFbGVtZW50ID0gMDsKKyAgICBWZWN0b3I8U3RyaW5nPiBsaWdhdHVyZXM7CiAgICAgZm9y
IChOb2RlKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPm5leHRT
aWJsaW5nKCkpIHsKICAgICAgICAgaWYgKGNoaWxkLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpnbHlw
aFRhZykpIHsKICAgICAgICAgICAgIFNWR0dseXBoRWxlbWVudCogZ2x5cGggPSBzdGF0aWNfY2Fz
dDxTVkdHbHlwaEVsZW1lbnQqPihjaGlsZCk7CiAgICAgICAgICAgICBTdHJpbmcgdW5pY29kZSA9
IGdseXBoLT5nZXRBdHRyaWJ1dGUoU1ZHTmFtZXM6OnVuaWNvZGVBdHRyKTsKLSAgICAgICAgICAg
IGlmICh1bmljb2RlLmxlbmd0aCgpKQotICAgICAgICAgICAgICAgIG1fZ2x5cGhNYXAuYWRkKHVu
aWNvZGUsIGdseXBoLT5idWlsZEdseXBoSWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFNWR0ds
eXBoIHN2Z0dseXBoID0gZ2x5cGgtPmJ1aWxkR2x5cGhJZGVudGlmaWVyKCk7CisgICAgICAgICAg
ICB1bnNpZ25lZCB1bmljb2RlTGVuZ3RoID0gdW5pY29kZS5sZW5ndGgoKTsKKworICAgICAgICAg
ICAgLy8gUmVnaXN0ZXIgbmFtZWQgZ2x5cGhzIGluIHRoZSBnbHlwaCB0YWJsZSBhcyB3ZWxsLgor
ICAgICAgICAgICAgaWYgKCF1bmljb2RlTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgbV9nbHlw
aE1hcC5hZGROYW1lZEdseXBoKGdseXBoLT5nZXRJZEF0dHJpYnV0ZSgpLCBzdmdHbHlwaCk7Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8v
IFJlZ2lzdGVyIGxpZ2F0dXJlcywgaWYgbmVlZGVkLgorICAgICAgICAgICAgaWYgKHVuaWNvZGVM
ZW5ndGggPiAxKQorICAgICAgICAgICAgICAgIGxpZ2F0dXJlcy5hcHBlbmQodW5pY29kZSk7CisK
KyAgICAgICAgICAgIG1fZ2x5cGhNYXAuYWRkKHVuaWNvZGUsIHN2Z0dseXBoKTsKICAgICAgICAg
fSBlbHNlIGlmIChjaGlsZC0+aGFzVGFnTmFtZShTVkdOYW1lczo6aGtlcm5UYWcpKSB7CiAgICAg
ICAgICAgICBTVkdIS2VybkVsZW1lbnQqIGhrZXJuID0gc3RhdGljX2Nhc3Q8U1ZHSEtlcm5FbGVt
ZW50Kj4oY2hpbGQpOwogICAgICAgICAgICAgaGtlcm4tPmJ1aWxkSG9yaXpvbnRhbEtlcm5pbmdQ
YWlyKG1faG9yaXpvbnRhbEtlcm5pbmdQYWlycyk7CiAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQt
Pmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnZrZXJuVGFnKSkgewogICAgICAgICAgICAgU1ZHVktlcm5F
bGVtZW50KiB2a2VybiA9IHN0YXRpY19jYXN0PFNWR1ZLZXJuRWxlbWVudCo+KGNoaWxkKTsKICAg
ICAgICAgICAgIHZrZXJuLT5idWlsZFZlcnRpY2FsS2VybmluZ1BhaXIobV92ZXJ0aWNhbEtlcm5p
bmdQYWlycyk7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjaGlsZC0+aGFzVGFnTmFt
ZShTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZykgJiYgIWZpcnN0TWlzc2luZ0dseXBoRWxlbWVu
dCkKKyAgICAgICAgICAgIGZpcnN0TWlzc2luZ0dseXBoRWxlbWVudCA9IHN0YXRpY19jYXN0PFNW
R01pc3NpbmdHbHlwaEVsZW1lbnQqPihjaGlsZCk7CisgICAgfQorCisgICAgLyogRklYTUU6IFJl
Z2lzdGVyIGVhY2ggY2hhcmFjdGVyIG9mIGVhY2ggbGlnYXR1cmUsIGlmIG5lZWRlZC4KKyAgICAg
ICBUaGlzIGlzIG5vdCBuZWVkZWQgeWV0LCB0dXJuIGl0IG9uIHdpdGggdGhlIG5leHQgcGF0Y2gu
IFdpdGggdGhlIGN1cnJlbnQgU1ZHIEZvbnRzIGNvZGUgaXQgd291bGQgYnJlYWsgZm9udHMtZ2x5
cGgtMDQtdC5zdmcKKyAgICBpZiAoIWxpZ2F0dXJlcy5pc0VtcHR5KCkpCisgICAgICAgIHJlZ2lz
dGVyTGlnYXR1cmVzSW5HbHlwaENhY2hlKGxpZ2F0dXJlcyk7CisgICAgKi8KKworICAgIC8vIFJl
Z2lzdGVyIG1pc3NpbmctZ2x5cGggZWxlbWVudCwgaWYgcHJlc2VudC4KKyAgICBpZiAoZmlyc3RN
aXNzaW5nR2x5cGhFbGVtZW50KSB7CisgICAgICAgIFNWR0dseXBoIHN2Z0dseXBoID0gU1ZHR2x5
cGhFbGVtZW50OjpidWlsZEdlbmVyaWNHbHlwaElkZW50aWZpZXIoZmlyc3RNaXNzaW5nR2x5cGhF
bGVtZW50KTsKKyAgICAgICAgbV9nbHlwaE1hcC5hcHBlbmRUb0dseXBoVGFibGUoc3ZnR2x5cGgp
OworICAgICAgICBtX21pc3NpbmdHbHlwaCA9IHN2Z0dseXBoLnRhYmxlRW50cnk7CisgICAgICAg
IEFTU0VSVChtX21pc3NpbmdHbHlwaCA+IDApOwogICAgIH0KLSAgICAgICAgCisKICAgICBtX2lz
R2x5cGhDYWNoZVZhbGlkID0gdHJ1ZTsKIH0KIApAQCAtMTMyLDcgKzIwMSw3IEBAIHN0YXRpYyBi
b29sIHN0cmluZ01hdGNoZXNHbHlwaE5hbWUoY29uc3QKICAgICAKICAgICByZXR1cm4gZmFsc2U7
CiB9Ci0gICAgCisKIHN0YXRpYyBib29sIG1hdGNoZXMoY29uc3QgU3RyaW5nJiB1MSwgY29uc3Qg
U3RyaW5nJiBnMSwgY29uc3QgU3RyaW5nJiB1MiwgY29uc3QgU3RyaW5nJiBnMiwgY29uc3QgU1ZH
S2VybmluZ1BhaXImIGtlcm5pbmdQYWlyKQogewogICAgIGlmICghc3RyaW5nTWF0Y2hlc1VuaWNv
ZGVSYW5nZSh1MSwga2VybmluZ1BhaXIudW5pY29kZVJhbmdlMSwga2VybmluZ1BhaXIudW5pY29k
ZU5hbWUxKQpAQCAtMTQ2LDcgKzIxNSw3IEBAIHN0YXRpYyBib29sIG1hdGNoZXMoY29uc3QgU3Ry
aW5nJiB1MSwgY28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGZsb2F0IGtlcm5pbmdG
b3JQYWlyT2ZTdHJpbmdzQW5kR2x5cGhzKEtlcm5pbmdQYWlyVmVjdG9yJiBrZXJuaW5nUGFpcnMs
IGNvbnN0IFN0cmluZyYgdTEsIGNvbnN0IFN0cmluZyYgZzEsIGNvbnN0IFN0cmluZyYgdTIsIGNv
bnN0IFN0cmluZyYgZzIpCitzdGF0aWMgZmxvYXQga2VybmluZ0ZvclBhaXJPZlN0cmluZ3NBbmRH
bHlwaHMoY29uc3QgS2VybmluZ1BhaXJWZWN0b3ImIGtlcm5pbmdQYWlycywgY29uc3QgU3RyaW5n
JiB1MSwgY29uc3QgU3RyaW5nJiBnMSwgY29uc3QgU3RyaW5nJiB1MiwgY29uc3QgU3RyaW5nJiBn
MikKIHsKICAgICBLZXJuaW5nUGFpclZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBrZXJuaW5n
UGFpcnMuZW5kKCkgLSAxOwogICAgIGNvbnN0IEtlcm5pbmdQYWlyVmVjdG9yOjpjb25zdF9pdGVy
YXRvciBiZWdpbiA9IGtlcm5pbmdQYWlycy5iZWdpbigpIC0gMTsKQEAgLTE1NSwxMyArMjI0LDEz
IEBAIHN0YXRpYyBmbG9hdCBrZXJuaW5nRm9yUGFpck9mU3RyaW5nc0FuZEcKICAgICAgICAgICAg
IHJldHVybiBpdC0+a2VybmluZzsKICAgICB9CiAKLSAgICByZXR1cm4gMC4wZjsKKyAgICByZXR1
cm4gMDsKIH0KICAgICAKIGZsb2F0IFNWR0ZvbnRFbGVtZW50Ojpob3Jpem9udGFsS2VybmluZ0Zv
clBhaXJPZlN0cmluZ3NBbmRHbHlwaHMoY29uc3QgU3RyaW5nJiB1MSwgY29uc3QgU3RyaW5nJiBn
MSwgY29uc3QgU3RyaW5nJiB1MiwgY29uc3QgU3RyaW5nJiBnMikgY29uc3QKIHsKICAgICBpZiAo
bV9ob3Jpem9udGFsS2VybmluZ1BhaXJzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDAuMGY7
CisgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIGtlcm5pbmdGb3JQYWlyT2ZTdHJpbmdz
QW5kR2x5cGhzKG1faG9yaXpvbnRhbEtlcm5pbmdQYWlycywgdTEsIGcxLCB1MiwgZzIpOwogfQpA
QCAtMTY5LDE1ICsyMzgsMzQgQEAgZmxvYXQgU1ZHRm9udEVsZW1lbnQ6Omhvcml6b250YWxLZXJu
aW5nRgogZmxvYXQgU1ZHRm9udEVsZW1lbnQ6OnZlcnRpY2FsS2VybmluZ0ZvclBhaXJPZlN0cmlu
Z3NBbmRHbHlwaHMoY29uc3QgU3RyaW5nJiB1MSwgY29uc3QgU3RyaW5nJiBnMSwgY29uc3QgU3Ry
aW5nJiB1MiwgY29uc3QgU3RyaW5nJiBnMikgY29uc3QKIHsKICAgICBpZiAobV92ZXJ0aWNhbEtl
cm5pbmdQYWlycy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwLjBmOworICAgICAgICByZXR1
cm4gMDsKIAogICAgIHJldHVybiBrZXJuaW5nRm9yUGFpck9mU3RyaW5nc0FuZEdseXBocyhtX3Zl
cnRpY2FsS2VybmluZ1BhaXJzLCB1MSwgZzEsIHUyLCBnMik7CiB9CiAKLXZvaWQgU1ZHRm9udEVs
ZW1lbnQ6OmdldEdseXBoSWRlbnRpZmllcnNGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IFZlY3RvcjxTVkdHbHlwaD4mIGdseXBocykgY29uc3QKK3ZvaWQgU1ZHRm9udEVsZW1lbnQ6OmNv
bGxlY3RHbHlwaHNGb3JTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFZlY3RvcjxTVkdHbHlw
aD4mIGdseXBocykKK3sKKyAgICBlbnN1cmVHbHlwaENhY2hlKCk7CisgICAgbV9nbHlwaE1hcC5j
b2xsZWN0R2x5cGhzRm9yU3RyaW5nKHN0cmluZywgZ2x5cGhzKTsKK30KKwordm9pZCBTVkdGb250
RWxlbWVudDo6Y29sbGVjdEdseXBoc0ZvckdseXBoTmFtZShjb25zdCBTdHJpbmcmIGdseXBoTmFt
ZSwgVmVjdG9yPFNWR0dseXBoPiYgZ2x5cGhzKQoreworICAgIGVuc3VyZUdseXBoQ2FjaGUoKTsK
KyAgICAvLyBGSVhNRTogV2Ugb25seSBzdXBwb3J0IGdseXBoTmFtZSAtPiBzaW5nbGUgZ2x5cGgg
bWFwcGluZyBzbyBmYXIuCisgICAgZ2x5cGhzLmFwcGVuZChtX2dseXBoTWFwLmdseXBoSWRlbnRp
ZmllckZvckdseXBoTmFtZShnbHlwaE5hbWUpKTsKK30KKworU1ZHR2x5cGggU1ZHRm9udEVsZW1l
bnQ6OnN2Z0dseXBoRm9yR2x5cGgoR2x5cGggZ2x5cGgpCit7CisgICAgZW5zdXJlR2x5cGhDYWNo
ZSgpOworICAgIHJldHVybiBtX2dseXBoTWFwLnN2Z0dseXBoRm9yR2x5cGgoZ2x5cGgpOworfQor
ICAgIAorR2x5cGggU1ZHRm9udEVsZW1lbnQ6Om1pc3NpbmdHbHlwaCgpCiB7CiAgICAgZW5zdXJl
R2x5cGhDYWNoZSgpOwotICAgIG1fZ2x5cGhNYXAuZ2V0KHN0cmluZywgZ2x5cGhzKTsKKyAgICBy
ZXR1cm4gbV9taXNzaW5nR2x5cGg7CiB9CiAKIEF0dHJpYnV0ZVRvUHJvcGVydHlUeXBlTWFwJiBT
VkdGb250RWxlbWVudDo6YXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKQpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgJKHJldmlzaW9uIDg4NTIwKQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZvbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcgKzQzLDcgQEAg
c3RydWN0IFNWR0tlcm5pbmdQYWlyIHsKICAgICBIYXNoU2V0PFN0cmluZz4gZ2x5cGhOYW1lMjsK
ICAgICAKICAgICBTVkdLZXJuaW5nUGFpcigpCi0gICAgICAgIDoga2VybmluZygwLjBmKQorICAg
ICAgICA6IGtlcm5pbmcoMCkKICAgICB7CiAgICAgfQogfTsKQEAgLTU4LDEyICs1OCwxNiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHRm9udEVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZUdseXBo
Q2FjaGUoKTsKLQotICAgIHZvaWQgZ2V0R2x5cGhJZGVudGlmaWVyc0ZvclN0cmluZyhjb25zdCBT
dHJpbmcmLCBWZWN0b3I8U1ZHR2x5cGg+JikgY29uc3Q7CisgICAgdm9pZCBjb2xsZWN0R2x5cGhz
Rm9yU3RyaW5nKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxTVkdHbHlwaD4mKTsKKyAgICB2b2lkIGNv
bGxlY3RHbHlwaHNGb3JHbHlwaE5hbWUoY29uc3QgU3RyaW5nJiwgVmVjdG9yPFNWR0dseXBoPiYp
OwogCiAgICAgZmxvYXQgaG9yaXpvbnRhbEtlcm5pbmdGb3JQYWlyT2ZTdHJpbmdzQW5kR2x5cGhz
KGNvbnN0IFN0cmluZyYgdTEsIGNvbnN0IFN0cmluZyYgZzEsIGNvbnN0IFN0cmluZyYgdTIsIGNv
bnN0IFN0cmluZyYgZzIpIGNvbnN0OwogICAgIGZsb2F0IHZlcnRpY2FsS2VybmluZ0ZvclBhaXJP
ZlN0cmluZ3NBbmRHbHlwaHMoY29uc3QgU3RyaW5nJiB1MSwgY29uc3QgU3RyaW5nJiBnMSwgY29u
c3QgU3RyaW5nJiB1MiwgY29uc3QgU3RyaW5nJiBnMikgY29uc3Q7Ci0gICAgCisKKyAgICAvLyBV
c2VkIGJ5IFNpbXBsZUZvbnREYXRhL1dpZHRoSXRlcmF0b3IuCisgICAgU1ZHR2x5cGggc3ZnR2x5
cGhGb3JHbHlwaChHbHlwaCk7CisgICAgR2x5cGggbWlzc2luZ0dseXBoKCk7CisKICAgICBTVkdN
aXNzaW5nR2x5cGhFbGVtZW50KiBmaXJzdE1pc3NpbmdHbHlwaEVsZW1lbnQoKSBjb25zdDsKIAog
cHJpdmF0ZToKQEAgLTc0LDE3ICs3OCwxOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBm
aWxsQXR0cmlidXRlVG9Qcm9wZXJ0eVR5cGVNYXAoKTsKICAgICB2aXJ0dWFsIEF0dHJpYnV0ZVRv
UHJvcGVydHlUeXBlTWFwJiBhdHRyaWJ1dGVUb1Byb3BlcnR5VHlwZU1hcCgpOwogCi0gICAgdm9p
ZCBlbnN1cmVHbHlwaENhY2hlKCkgY29uc3Q7CisgICAgdm9pZCBlbnN1cmVHbHlwaENhY2hlKCk7
CisgICAgdm9pZCByZWdpc3RlckxpZ2F0dXJlc0luR2x5cGhDYWNoZShWZWN0b3I8U3RyaW5nPiYp
OwogCiAgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCiAKICAgICAvLyBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCiAgICAgREVDTEFSRV9BTklNQVRFRF9CT09MRUFOKEV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAKLSAg
ICBtdXRhYmxlIEtlcm5pbmdQYWlyVmVjdG9yIG1faG9yaXpvbnRhbEtlcm5pbmdQYWlyczsKLSAg
ICBtdXRhYmxlIEtlcm5pbmdQYWlyVmVjdG9yIG1fdmVydGljYWxLZXJuaW5nUGFpcnM7Ci0gICAg
bXV0YWJsZSBTVkdHbHlwaE1hcCBtX2dseXBoTWFwOwotICAgIG11dGFibGUgYm9vbCBtX2lzR2x5
cGhDYWNoZVZhbGlkOworICAgIEtlcm5pbmdQYWlyVmVjdG9yIG1faG9yaXpvbnRhbEtlcm5pbmdQ
YWlyczsKKyAgICBLZXJuaW5nUGFpclZlY3RvciBtX3ZlcnRpY2FsS2VybmluZ1BhaXJzOworICAg
IFNWR0dseXBoTWFwIG1fZ2x5cGhNYXA7CisgICAgR2x5cGggbV9taXNzaW5nR2x5cGg7CisgICAg
Ym9vbCBtX2lzR2x5cGhDYWNoZVZhbGlkOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgJKHJldmlzaW9uIDg4NTIwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dseXBoTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDExICsyMSwx
NiBAQAogI2RlZmluZSBTVkdHbHlwaE1hcF9oCiAKICNpZiBFTkFCTEUoU1ZHX0ZPTlRTKQorI2lu
Y2x1ZGUgIlNWR0dseXBoLmgiCiAjaW5jbHVkZSAiU1ZHR2x5cGhFbGVtZW50LmgiCiAKKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBzdHJ1Y3QgR2x5cGhNYXBOb2RlOworY2xhc3MgU1ZHRm9udERhdGE7CiAK
IHR5cGVkZWYgSGFzaE1hcDxVQ2hhciwgUmVmUHRyPEdseXBoTWFwTm9kZT4gPiBHbHlwaE1hcExh
eWVyOwogCkBAIC00NSw3ICs1MCw3IEBAIGNsYXNzIFNWR0dseXBoTWFwIHsKIHB1YmxpYzoKICAg
ICBTVkdHbHlwaE1hcCgpIDogbV9jdXJyZW50UHJpb3JpdHkoMCkgeyB9CiAKLSAgICB2b2lkIGFk
ZChjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU1ZHR2x5cGgmIGdseXBoKSAKKyAgICB2b2lk
IGFkZChjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU1ZHR2x5cGgmIGdseXBoKQogICAgIHsK
ICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmluZy5sZW5ndGgoKTsKICAgICAgICAgR2x5cGhNYXBM
YXllciogY3VycmVudExheWVyID0gJm1fcm9vdExheWVyOwpAQCAtNjMsMjIgKzY4LDQ0IEBAIHB1
YmxpYzoKIAogICAgICAgICBpZiAobm9kZSkgewogICAgICAgICAgICAgbm9kZS0+Z2x5cGhzLmFw
cGVuZChnbHlwaCk7Ci0gICAgICAgICAgICBub2RlLT5nbHlwaHMubGFzdCgpLnByaW9yaXR5ID0g
bV9jdXJyZW50UHJpb3JpdHkrKzsKLSAgICAgICAgICAgIG5vZGUtPmdseXBocy5sYXN0KCkudW5p
Y29kZVN0cmluZ0xlbmd0aCA9IGxlbjsKLSAgICAgICAgICAgIG5vZGUtPmdseXBocy5sYXN0KCku
aXNWYWxpZCA9IHRydWU7CisKKyAgICAgICAgICAgIFNWR0dseXBoJiBzdmdHbHlwaCA9IG5vZGUt
PmdseXBocy5sYXN0KCk7CisgICAgICAgICAgICBzdmdHbHlwaC5wcmlvcml0eSA9IG1fY3VycmVu
dFByaW9yaXR5Kys7CisgICAgICAgICAgICBzdmdHbHlwaC51bmljb2RlU3RyaW5nTGVuZ3RoID0g
bGVuOworICAgICAgICAgICAgc3ZnR2x5cGguaXNWYWxpZCA9IHRydWU7CisgICAgICAgICAgICBh
cHBlbmRUb0dseXBoVGFibGUoc3ZnR2x5cGgpOwogICAgICAgICB9CiAgICAgfQogCisgICAgdm9p
ZCBhZGROYW1lZEdseXBoKGNvbnN0IFN0cmluZyYgZ2x5cGhOYW1lLCBTVkdHbHlwaCYgZ2x5cGgp
CisgICAgeworICAgICAgICBpZiAoZ2x5cGhOYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgYXBwZW5kVG9HbHlwaFRhYmxlKGdseXBoKTsKKyAgICAgICAgbV9uYW1l
ZEdseXBocy5hZGQoZ2x5cGhOYW1lLCBnbHlwaC50YWJsZUVudHJ5KTsKKyAgICB9CisKKyAgICB2
b2lkIGFwcGVuZFRvR2x5cGhUYWJsZShTVkdHbHlwaCYgZ2x5cGgpCisgICAgeworICAgICAgICBz
aXplX3QgdGFibGVFbnRyeSA9IG1fZ2x5cGhUYWJsZS5zaXplKCk7CisgICAgICAgIEFTU0VSVCh0
YWJsZUVudHJ5IDwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZCBzaG9ydD46Om1heCgpKTsK
KworICAgICAgICAvLyBUaGUgZmlyc3QgdGFibGUgZW50cnkgc3RhcnRzIHdpdGggMS4gMCBkZW5v
dGVzIGFuIHVua25vd24gZ2x5cGguCisgICAgICAgIGdseXBoLnRhYmxlRW50cnkgPSB0YWJsZUVu
dHJ5ICsgMTsKKyAgICAgICAgbV9nbHlwaFRhYmxlLmFwcGVuZChnbHlwaCk7CisgICAgfQorCiAg
ICAgc3RhdGljIGlubGluZSBib29sIGNvbXBhcmVHbHlwaFByaW9yaXR5KGNvbnN0IFNWR0dseXBo
JiBmaXJzdCwgY29uc3QgU1ZHR2x5cGgmIHNlY29uZCkKICAgICB7CiAgICAgICAgIHJldHVybiBm
aXJzdC5wcmlvcml0eSA8IHNlY29uZC5wcmlvcml0eTsKICAgICB9CiAKLSAgICB2b2lkIGdldChj
b25zdCBTdHJpbmcmIHN0cmluZywgVmVjdG9yPFNWR0dseXBoPiYgZ2x5cGhzKQorICAgIHZvaWQg
Y29sbGVjdEdseXBoc0ZvclN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgVmVjdG9yPFNWR0ds
eXBoPiYgZ2x5cGhzKQogICAgIHsKICAgICAgICAgR2x5cGhNYXBMYXllciogY3VycmVudExheWVy
ID0gJm1fcm9vdExheWVyOwogCi0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyaW5n
Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgc2l6ZV90IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgo
KTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAg
ICAgICAgVUNoYXIgY3VyQ2hhciA9IHN0cmluZ1tpXTsKICAgICAgICAgICAgIFJlZlB0cjxHbHlw
aE1hcE5vZGU+IG5vZGUgPSBjdXJyZW50TGF5ZXItPmdldChjdXJDaGFyKTsKICAgICAgICAgICAg
IGlmICghbm9kZSkKQEAgLTg4LDIxICsxMTUsMzYgQEAgcHVibGljOgogICAgICAgICB9CiAgICAg
ICAgIHN0ZDo6c29ydChnbHlwaHMuYmVnaW4oKSwgZ2x5cGhzLmVuZCgpLCBjb21wYXJlR2x5cGhQ
cmlvcml0eSk7CiAgICAgfQotCisgICAgCiAgICAgdm9pZCBjbGVhcigpIAogICAgIHsgCi0gICAg
ICAgIG1fcm9vdExheWVyLmNsZWFyKCk7IAorICAgICAgICBtX3Jvb3RMYXllci5jbGVhcigpOwor
ICAgICAgICBtX2dseXBoVGFibGUuY2xlYXIoKTsKICAgICAgICAgbV9jdXJyZW50UHJpb3JpdHkg
PSAwOwogICAgIH0KIAorICAgIGNvbnN0IFNWR0dseXBoJiBzdmdHbHlwaEZvckdseXBoKEdseXBo
IGdseXBoKSBjb25zdAorICAgIHsKKyAgICAgICAgaWYgKCFnbHlwaCB8fCBnbHlwaCA+IG1fZ2x5
cGhUYWJsZS5zaXplKCkpIHsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoU1ZHR2x5
cGgsIGRlZmF1bHRHbHlwaCwgKCkpOworICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRHbHlwaDsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4gbV9nbHlwaFRhYmxlW2dseXBoIC0gMV07CisgICAg
fQorCisgICAgY29uc3QgU1ZHR2x5cGgmIGdseXBoSWRlbnRpZmllckZvckdseXBoTmFtZShjb25z
dCBTdHJpbmcmIGdseXBoTmFtZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBzdmdHbHlw
aEZvckdseXBoKG1fbmFtZWRHbHlwaHMuZ2V0KGdseXBoTmFtZSkpOworICAgIH0KKwogcHJpdmF0
ZToKICAgICBHbHlwaE1hcExheWVyIG1fcm9vdExheWVyOworICAgIFZlY3RvcjxTVkdHbHlwaCwg
MjU2PiBtX2dseXBoVGFibGU7CisgICAgSGFzaE1hcDxTdHJpbmcsIEdseXBoPiBtX25hbWVkR2x5
cGhzOwogICAgIGludCBtX2N1cnJlbnRQcmlvcml0eTsKIH07CiAKIH0KIAogI2VuZGlmIC8vIEVO
QUJMRShTVkdfRk9OVFMpCi0KLQogI2VuZGlmIC8vIFNWR0dseXBoTWFwX2gK
</data>
<flag name="review"
          id="90484"
          type_id="1"
          status="+"
          setter="rwlbuis"
    />
          </attachment>
      

    </bug>

</bugzilla>