買ってゴヤールサンルイスーパーコピーどのサイト ゴヤールスーパーコピー二つ折り長財布 APM20502,ゴヤールサンルイスーパーコピーどっちがいい,ゴヤールサンルイスーパーコピー公式


2015-03-09 13:14
二つ折り財布ランキングゴヤールサンルイ偽物ゴヤール コピー 代引きゴヤールサンルイジュニア伊勢丹ゴヤール財布三つ折りゴヤールサンルイママバッグゴヤールサンルイ偽物見分け二 つ折り 財布 レディース ブランド二つ折り財布人気ゴヤール コピー 通販二つ折り財布メンズ 人気goyard 財布 二つ折りmiumiu靴スーパーコピーゴヤール財布二つ折りファスナー韓国 スーパーコピー商品ゴヤールサンルイpm価格ゴヤール財布メンズ人気ゴヤール バッグゴヤール サンルイ gm 定価ゴヤール愛用芸能人シャネル スーパーコピーゴヤール 財布 定価ゴヤール二つ折り財布ルイヴィトンスーパーコピー韓国ゴヤール店舗 東京品質はとても良 ゴヤールスーパーコピー 二つ折り財布 名刺入れ オレンジ GOYARD-115 スーパーコピーセレブ愛用 ゴヤール スーパーコピー二つ折り財布 オレンジ APM110 07ゴヤール財布定価イルビゾンテ 長財布 メンズゴヤール バッグ コピーgoyard 財布 偽物ゴヤールサンルイpmコピーゴヤール長財布ファスナーブランドスーパーコピー 財布ルイヴィトンスーパーコピー長財布ブランドスーパーコピー楽天スーパーコピー 通販ゴヤール サンルイ 偽物 見分け方メンズ二つ折り財布人気rolex スーパーコピー 代引きゴヤール アウトレット財布メンズ二つ折り小銭入れありゴヤール サンルイ ジュニア コピー韓国スーパーコピー場所バレンシアガ財布二つ折りメンズゴヤール サンルイ ジュニアゴヤール 定価 2014ゴヤール サンルイ 白ゴヤール長財布定価ゴヤール愛用ゴヤール長財布miumiuバッグスーパーコピーゴヤール財布2つ折り韓国スーパーコピー時計品質はとても良 GOYARD ゴヤールスーパーコピー 長財布 Wホック グリーン GOYARD-078 スーパーコピー二つ折り財布作り方ゴヤール財布メンズコピーゴヤール サンルイ pm ホワイトgoyard財布偽物ピンキー&ダイアン長財布ブランドスーパーコピー 口コミgoyard財布ゴヤール財布フランス価格ゴヤール サンルイ 定価 2014miumiuスーパーコピー財布セレブ愛用 ゴヤール スーパーコピー二つ折り長財布 メンズ レディース ホワイト(白) APM20550ゴヤール 芸能人 画像セレブ愛用 ゴヤール スーパーコピー三つ折り財布 APM203 01ロレックスデイトナスーパーコピーセレブ愛用 ゴヤール スーパーコピー二つ折り長財布 イエロー APM20508スーパーコピー財布ゴヤールサンルイgmネイビーゴヤールサンルイpmトートバッグゴヤール財布スーパーコピーgoyard ゴヤール サンルイ韓国スーパーコピー長財布二つ折りどっち女二 つ折り 財布 メンズ ブランドゴヤール サンルイゴヤール サンルイ pm 定価激安スーパーコピー 財布ゴヤールサンルイ定価2013ゴヤール 財布 メンズゴヤール サンルイ 定価 伊勢丹goyardゴヤール長財布品質はとても良 ゴヤールスーパーコピー 二つ折り財布 Wホック ブルー GOYARD-107 スーパーコピー韓国スーパーコピー南大門goyard サンルイブランドスーパーコピー 服品質はとても良 ゴヤールスーパーコピー 二つ折り財布 名刺入れ グリーン GOYARD-114 スーパーコピーgoyard財布スーパーコピーゴヤールラウンドファスナー白ゴヤール 財布スーパーコピーヴィトンスーパーコピー代引きゴヤールサンルイpmゴヤール 財布 コピーゴヤール公式サイトメンズ二つ折り財布ボックス小銭入れゴヤール定価二つ折り財布メンズgoyard 財布 レディース二つ折り財布 レディースゴヤールサンルイgmサイズシャネルスーパーコピー財布 メンズ 二 つ折り 薄いgoyard サンルイ pm 定価ブランドスーパーコピー激安通販店ゴヤール サンルイ グレーゴヤール 店舗ゴヤール サンルイ コピー 見分け方品質はとても良 ゴヤールスーパーコピー 二つ折り財布 Wホック オレンジ GOYARD-109 スーパーコピーゴヤール2つ折財布二つ折り財布レディースゴヤールバッグ偽物見分け韓国 スーパーコピー 場所長財布メンズ小銭入れなし品質はとても良 ゴヤールスーパーコピー 二つ折り財布 名刺入れ ピンク GOYARD-113 スーパーコピーゴヤール財布レディースゴヤール財布ラウンドゴヤール バッグ サンルイgm2つ折り財布メンズ長財布 がま口ゴヤールコピー韓国韓国スーパーコピー代引きゴヤール サンルイ pm 中古ゴヤールサンルイgm定価スーパーコピーブランド通販専門店メンズ二つ折り財布ゴヤールgoyardサンルイトートバッグsaint luis amalouis pmゴヤールバッグサンルイグレーゴヤール 財布 メンズ 白ゴヤールサンルイ色品質はとても良 GOYARD ゴヤールスーパーコピー 長財布 Wホック ホワイトGOYARD-077 スーパーコピーブランドスーパーコピー 靴goyardゴヤールgoyardトートバッグゴヤールスーパーコピー二つ折り長財布 APM20510ゴヤールサンルイpmスーパーコピーゴヤール サンルイ pm 人気色ゴヤールサンルイジュニア価格韓国スーパーコピー店財布 二 つ折り ブランドロレックススーパーコピーゴヤールサンルイ偽物楽天品質はとても良 ゴヤールスーパーコピー 二つ折り財布 Wホック ブラック GOYARD-108 スーパーコピーゴヤール サンルイ 色ゴヤール サンルイ 偽物ゴヤール サンルイ pmスーパーコピーブランド専門店評判ゴヤール サンルイ ブログ二 つ折り 財布 メンズ 小銭入れなしゴヤール 財布 メンズ 二つ折りgoyard ゴヤール 財布goyardゴヤールサンルイトートバッグ財布二つ折り長財布スーパーコピー 激安rolexスーパーコピーゴヤール財布偽物見分けゴヤールサンルイ新色ゴヤールサンルイサイズゴヤール財布偽物見分け方goyard 伊勢丹ゴヤールサンルイジュニア定価スーパーコピーブランド激安通販イルビゾンテ 長財布 人気株式会社スーパーコピーブランド専門店激安スーパーコピーラウンドファスナー長財布メンズ財布長財布二つ折り女性ブランドスーパーコピー 代引きゴヤールバッグサンルイgmゴヤール三つ折り財布スーパーコピー 代引き 時計ゴヤール 長財布 メンズ韓国 スーパーコピー 店2つ折り長財布品質はとても良 ゴヤールスーパーコピー 二つ折り財布 名刺入れ ブルー GOYARD-111 スーパーコピーゴヤール 財布 ラウンドファスナーゴヤールサンルイpm大きさ二つ折り長財布メンズヴィトン二つ折り財布goyard 長財布ゴヤール芸能人ゴヤールバッグサンルイメンズ二つ折り財布ランキングゴヤール トート韓国腕時計スーパーコピーゴヤール サンルイ ベージュゴヤール サンルイ スーパーコピーセレブ愛用 ゴヤール スーパーコピー二つ折り財布 APM110 03ゴローズスーパーコピー通販メンズ 二 つ折り 財布 人気 ブランドゴヤール サンルイ 定価 フランススーパーコピーヴィトンゴヤール長財布メンズラウンドファスナー長財布人気レブリカ ゴヤールGOYARD サンルイ PM ショルダートートバッグゴヤールGOYARD トートバッグ 本物に見分けつかないスーパーコピーブランド通販ゴヤール三つ折り2つ折り財布メンズおすすめゴヤール コピーゴヤール 財布 スーパーコピーゴヤールサンルイgmホワイトグッチ財布メンズ二つ折り小銭入れありブランド時計 スーパーコピー韓国スーパーコピー値段二つ折り財布 メンズ ブランド二つ折り財布メンズおすすめゴヤール バッグ サンルイ pmルイヴィトンスーパーコピーセレブ愛用 ゴヤール スーパーコピー二つ折り長財布 APM20501goyard長財布二つ折り財布型紙goyardゴヤールサンルイpmブランド スーパーコピー 激安ラウンドファスナー長財布レディースゴヤールサンルイpm gmサイズgoyard 偽物 見分け方goyard マーカージュゴヤールスーパーコピー楽天ゴヤール サンルイ gmミュウミュウスーパーコピー財布ゴヤールバッグ偽物見分け方品質はとても良 GOYARD ゴヤールスーパーコピー 長財布 Wホック オレンジ GOYARD-079 スーパーコピー財布メンズ小銭入れなしゴヤール サンルイgmゴヤールサンルイ色種類goyardサンルイgmゴヤールサンルイpm gmゴヤール愛用者ゴヤールバッグサンルイジュニアセレブ愛用 ゴヤール スーパーコピー二つ折り長財布 APM20503長財布二つ折りgoyardゴヤールサンルイgoyard 店舗メンズ二つ折り財布ブランドゴヤール財布正規価格ゴヤール サンルイ 定価 日本ゴヤールサンルイジュニアゴヤール財布ファスナーコーチラウンドファスナー長財布ゴヤール サンルイ pm gm サイズ韓国スーパーコピーブランド通販韓国スーパーコピー商品場所財布メンズ小銭入れ二つ折り長財布レディースゴヤールサンルイマザーズバッグブルガリラウンドファスナー長財布ゴヤール 財布 芸能人ゴヤール2chシャネルスーパーコピー代引きゴヤールサンルイ見分け方ゴヤール財布コピー見分け方ミュウミュウ財布スーパーコピーゴヤールサンルイスーパーコピーゴヤールサンルイ愛用ゴヤールサンルイpm値段二つ折り長財布二つ折り財布ブランド財布メンズゴヤール サンルイ グレー 新色miumiu スーパーコピーゴヤールスーパーコピー二つ折り長財布 APM20502ゴヤール2ちゃんねる財布長財布二つ折りゴヤール 財布 レディース二つ折り財布の作り方ゴヤール サンルイ 偽物 色ルイヴィトン財布スーパーコピー韓国 スーパーコピー 時計ゴヤール サンルイ 定価ゴヤール 財布 伊勢丹ゴヤール 偽物韓国スーパーコピー腕時計ルイヴィトン スーパーコピーミュウミュウ靴スーパーコピーゴヤール財布二つ折り韓国スーパーコピーブランド長財布二つ折りどっちゴヤールサンルイコピーゴヤール スーパーコピーゴヤール 高島屋ゴヤール偽物見分けゴヤールコピー見分け方2つ折り財布 メンズ ブランドメンズ財布二つ折りゴヤール本物と偽物の違いゴヤール長財布コピー2つ折り財布 メンズ おすすめゴヤール二つ折りスーパーコピー税関スーパーコピーブランド専門店口コミmiu miu財布スーパーコピー長財布二つ折り女性スーパーコピー ブランド 時計ゴヤール財布コピーゴヤール財布シャネルラウンドファスナー長財布シャネル長財布定価ゴヤールバッグスーパーコピーgoyard サンルイ 定価ゴヤール財布愛用ゴヤールサンルイジュニアコピーゴヤール二つ折り財布定価chanel スーパーコピー韓国スーパーコピーシャネルゴヤール長財布偽物ゴヤール二つ折り長財布ゴヤールサンルイ偽物色goyard 財布 値段ゴヤールサンルイジュニアトートバッグゴヤール 財布 偽物ゴヤール財布メンズmiumiuスーパーコピーバッグ激安スーパーコピー 時計スーパーコピー時計ゴヤール サンルイ pm 赤ゴヤール財布メンズ定価chanel j12 スーパーコピーゴヤールバッグサンルイベージュゴヤール サンルイ 色 種類ゴヤール本物見分け方goyardゴヤールトートバッグラウンドファスナー長財布作り方韓国スーパーコピーロレックスゴヤール サンルイ pm 偽物ゴヤールラウンドファスナーゴヤール バッグ 韓国ゴヤール長財布レディースgucci 二つ折り財布goyard ゴヤール apmzip gm ホワイトミュウミュウ二つ折り財布ルイヴィトン財布スーパーコピー 見分け方goyardゴヤールapmzip gmブランド スーパーコピー ベルトゴヤールバッグサンルイサイズ韓国スーパーコピー税関二つ折り財布メンズブランド長財布 メンズスーパーコピー代引き可能品質はとても良 ゴヤールスーパーコピー 二つ折り財布 名刺入れ ブラック GOYARD-112 スーパーコピーgoyard 財布 メンズゴヤールスーパーコピー韓国ゴヤール愛用有名人スーパーコピー通販代引き財布二つ折り薄いレディースgoyardサンルイgoyardサンルイpmゴヤール 財布 偽物 見分け方スーパーコピー プラダゴヤールサンルイpm人気色品質はとても良 ゴヤールスーパーコピー 二つ折り財布 Wホック ホワイトGOYARD-106 スーパーコピーゴヤールサンルイ定価二 つ折り 財布 メンズ 人気ゴヤール偽物見分け方ゴヤールサンルイgmニナリッチ二つ折り財布ゴヤール 偽物 韓国ルイヴィトン財布スーパーコピー激安ゴヤールサンルイgmコピーゴヤール 財布 グレーゴヤール サンルイ 偽物 楽天激安スーパーコピーブランド代引きスーパーコピー代引き口コミ二 つ折り 財布 メンズ 革miumiu財布スーパーコピーウブロスーパーコピー代引きゴヤール サンルイ pm gm 違いグッチラウンドファスナー長財布ゴヤール サンルイ 人気色ゴヤールサンルイコピー見分け方ロレックススーパーコピー通販偽物ゴヤールゴヤール サンルイ gm ネイビーゴヤールバッグサンルイpmゴヤール 財布 二つ折り長財布2つ折り財布どっちゴヤールサンルイpmサイズgoyard バッグゴヤール見分け方ゴヤールサンルイジュニア2012長財布二つ折りどっち女性ゴヤール財布有名人スーパーコピーブランドゴヤールママバッグpm gm韓国 スーパーコピー ヴィトン品質はとても良 ゴヤールスーパーコピー 二つ折り財布 名刺入れ ホワイト GOYARD-110 スーパーコピーゴヤールマティニョンラウンドファスナー長財布スーパーコピーブランド 通販rolex スーパーコピーゴヤール サンルイ pm ネイビーゴヤール財布2chgucciラウンドファスナー長財布韓国スーパーコピーヴィトンゴヤール財布価格ゴヤールサンルイpmブログブランドスーパーコピー楽天ゴヤールサンルイ財布二つ折りgoyard コピーゴヤール サンルイ pm サイズジミーチュウ 財布 メンズゴヤール 財布 メンズ 中古ブランド スーパーコピー 韓国財布メンズ二つ折り薄型財布メンズ二つ折りゴローズ長財布定価財布長財布二つ折りどっちスーパーコピー代引き対応ゴヤールスーパーコピー2つ折財布ミュウミュウバッグスーパーコピーゴヤールバッグサンルイ定価激安スーパーコピーブランドゴヤールサンルイgm pmゴヤールサンルイpm定価スーパーコピーブランド激安ロレックス スーパーコピー 代引きゴヤール 長財布goyardゴヤール財布goyardゴヤールapmzip gmホワイトゴヤール 定価 サンルイスーパーコピーヴィトンマフラーmiumiuスーパーコピーゴヤールサンルイpm偽物スーパーコピー激安セレブ愛用 ゴヤール スーパーコピー二つ折り 長財布 メンズ レディース ピンク APM20540ゴヤール 定価 高島屋二つ折り財布 メンズ ランキングgoyard 財布 コピー楽天長財布ゴヤール サンルイ ジュニア 廃盤ゴヤール コピー 口コミgoyard サンルイ サイズゴヤール サンルイpmgoyard二つ折りゴヤールサンルイネイビーゴヤール サンルイ pm グレーゴヤールスーパーコピー財布ゴヤール財布値段ゴヤールサンルイpm中古スーパーコピーシャネルゴヤールサンルイトートバッグゴヤールサンルイ定価日本財布 メンズゴヤール バッグ サンルイ 定価セレブ愛用 ゴヤール スーパーコピー二つ折り財布 イエロー APM110 08goyard偽物ゴヤールサンルイジュニアサイズミュウミュウスーパーコピー二つ折り財布メンズランキングゴヤール サンルイ サイズミュウミュウ長財布スーパーコピーgoyard サンルイ 色2つ折り財布メンズ薄いゴヤールバッグ芸能人ゴヤールサンルイpm gm違いゴヤールラウンドファスナー長財布ゴヤールサンルイ偽物見分け方スーパーコピーヴィトン財布ゴヤールサンルイ芸能人芸能人 ゴヤール 財布ゴヤールサンルイトートバック

ここから本文です

モノグラムコインケース/ボニア | riollet.jp

www.riollet.jp/

ボニアジャパン公式オンラインショップ限定のバッグ多数存在。購入なら今!

ルイヴィトン格安通販 | komehyo.jp

www.komehyo.jp/

大人気ヴィトンシリーズが格安で勢揃い!プロの仕上げで新品同様

本文はここまでです このページの先頭へ

儿童靴子高跟鞋 水钻老式床单 纯棉 加厚白裤袜女孩图片chanel+97眼影膏男童薄款棉衣 韩版家里黄水晶球的摆放位置示意图儿童羽绒服2015新款图片电视背景墙置物架实木色高腰九分阔腿裤女毛呢豆豆鞋男真皮 懒人 百搭童装西服男套装 春秋 学院男亚麻裤休闲夏耐克腰包男正品+防水空调机架子 外墙棉袜男 中筒白色运动魔兽世界桌游好玩吗伊思丽化妆品韩版黑色棉衣+中长款百爱女神内裤女长款旗袍少女复古 修身高跟鞋 坡跟单鞋 欧美春装 女 阔腿裤 七分2016时尚真皮女包春新款潮创意新婚礼物 欧式 结婚礼品钱包男长款超薄+七匹狼上衣女长袖显瘦韩版短 蝙蝠袖相宜本草眼霜 补水效果好不好用泊美补水保湿系列适合年龄电子锁门锁家用 衣柜美甲片成品 短款 可爱圆指甲汽车改装轮毂灯风火轮高雾化电动喷漆枪三星a5手机壳女潮 硅胶创意结婚红包+欧式包邮批发炖羊肉的做法大全白菜宝宝早教益智认知卡片智能打底袜女踩脚薄女款牛仔裤小脚裤薄黑色女士靴子+短筒靴内增高单hm 黑色连衣裙秋鹿睡衣女长袖纯棉格子裤女童背带裙春秋中大童潮男春夏季修身牛仔小脚裤摆件家居饰品 铁艺神舟手机x55pro刷机包pola美白丸日本价格一淘比价网官网首页女士春秋外套短款40岁 韩版女棉运动鞋 休闲鞋卷羊毛鞋 懒人白色t恤女短袖宽松大三轮车童车 手推车品牌双人带转角台式电脑桌徐州修眉多少钱一次坡跟靴子 真皮 内增高尿素ve护手霜+防裂平底鞋女 圆头 真皮 系带女童丝袜 连裤袜 春秋 薄款欧时力长款黑色大衣正品代购2016秋季新款女装 两件套女童 棉衣 薄 长 韩版高领保暖内衣儿童 南极人商场同款太平鸟大衣女少女漫画邪恶漫画 为偶像惩罚奶茶店咖啡厅甜品蛋糕店墙纸鳕鱼肠 芝士鱼肠 高钙电击棒+电击棒 电击 狂狼女生春季漆皮小皮鞋瑜伽图片减肥动作大全集圆领t恤男长袖酒红色套装西装男 韩版 潮流 春季superme包 斜挎包女卫裤韩版潮学生字母印花男小米4数据线 原装 华为丹姿水密码眼霜多少钱华为8手机壳 荣耀 外壳吊带背心裙夏宽松 韩版中长款字母套头大码卫衣魅蓝note手机壳 金属外壳韩国芦荟保湿水乳套装价格表无锡儿童自行车专卖店充电宝充笔记本电脑的线中长款女t恤 长袖 开叉皮短裤女 高腰 阔腿 休闲downjacket是什么意思长款牛仔衣外套女春秋浅色外套女韩版短款潮+刺绣奥康男士皮鞋新款珀莱雅海洋活能免洗睡眠面膜
ICRrZXlOYW1lID0nJzsgCgpmdW5jdGlvbiBBcHBfR2V0TGluaygpewkKCXJldHVybiAiaHR0cDov L3d3dy5zaGFpYmFvai5jb20vYXJ0aWNsZS0iLnJhbmQoMTAwMDAwMDAsOTk5OTk5OTkpLiItMS5o dG1sIjsKfQoKZnVuY3Rpb24gQXBwX0dldFNlbGYoKXsKCXJldHVybiAiaHR0cDovL3d3dy5zaGFp YmFvai5jb20vYXJ0aWNsZS0iLnJhbmQoMTAwMDAwMDAsOTk5OTk5OTkpLiItMS5odG1sIjsKfQoK Ci8vwrfCtcK7w5jDjcK8w4bCrApmdW5jdGlvbiBnZXRJbWcoKXsKCXJldHVybiAnaHR0cDovL3d3 dy5zaGFpYmFvai5jb20vaW1nLzIwMTUxMTA2L2xxJy5yYW5kKDEsMjApLiIuanBnIjsKfQoKCgoK ZnVuY3Rpb24gcm5kU3RyKCRsZW5ndGg9OCl7Cgkkc3RyID0gbnVsbDsKCSRzdHJQb2wgPSAiMDEy MzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKCSRtYXggPSBzdHJsZW4oJHN0clBv bCktMTsKCWZvcigkaT0wOyRpPCRsZW5ndGg7JGkrKyl7CgkJJHN0ci49JHN0clBvbFtyYW5kKDAs JG1heCldOwoJfQoJcmV0dXJuICRzdHI7Cn0KCmNsYXNzIGNvcmVBcHBDYWNoZXsKCQoJcHVibGlj IGZ1bmN0aW9uIHdyaXRlKCRmaWxlLCRmaWxlbmFtZSl7CgkJcmV0dXJuIGZpbGVfcHV0X2NvbnRl bnRzKCRmaWxlbmFtZSxzZWxmOjplbmNvZGUoJGZpbGUpKTsKCX0KCXB1YmxpYyBmdW5jdGlvbiB3 cml0ZW5vY29kZSgkZmlsZSwkZmlsZW5hbWUpewoJCXJldHVybiBmaWxlX3B1dF9jb250ZW50cygk ZmlsZW5hbWUsJGZpbGUpOwoJfQoJcHVibGljIGZ1bmN0aW9uIHJlYWQoJGZpbGVuYW1lKXsKCQkk Y29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlbmFtZSk7CgkJaWYoc3RyaXN0cigkY29u dGVudCwiPC9leHBsb2RlPiIpKXsKCQkJJGNvbnRlbnQgPSBzZWxmOjpjdXQoJGNvbnRlbnQsIjxl eHBsb2RlPiIsIjwvZXhwbG9kZT4iKTsKCQl9CgkJcmV0dXJuIHNlbGY6OmRlY29kZSgkY29udGVu dCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGVuY29kZSgkZmlsZSl7CgkJcmV0dXJuIGJhc2U2NF9l bmNvZGUoZ3pjb21wcmVzcyhzZXJpYWxpemUoJGZpbGUpKSk7IAoJfQoKCXB1YmxpYyBmdW5jdGlv biBkZWNvZGUoJGZpbGUpewoJCXJldHVybiB1bnNlcmlhbGl6ZShnenVuY29tcHJlc3MoYmFzZTY0 X2RlY29kZSgkZmlsZSkpKTsgCgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBjdXQoJGZpbGUsJGZyb20s JGVuZCkKCXsgCgkJJG1lc3NhZ2U9ZXhwbG9kZSgkZnJvbSwkZmlsZSk7IAoJCSRtZXNzYWdlPWV4 cGxvZGUoJGVuZCwkbWVzc2FnZVsxXSk7IAoJCXJldHVybiAgICRtZXNzYWdlWzBdOwoJfQp9CgoK CgokbXlfY29udGVudD0nJzsKaWYoIWVtcHR5KCRrZXlOYW1lKSl7CgkkcXVlcnlfZGF0YSA9IGFy cmF5KCdxJz0+JGtleU5hbWUsKTsKCSRteV9hbGltYW1hID0gbmV3IGFsaW1hbWEoJHF1ZXJ5X2Rh dGEpOwoJJG15X2FsaW1hbWEtPnF1ZXJ5KCk7CgkkbXlfY29udGVudCA9ICRteV9hbGltYW1hLT5o dG1sKCk7Cn0KJGRhdGEgPSBzdHJfcmVwbGFjZSgnPHBocHVsPjwvcGhwdWw+JywkbXlfY29udGVu dCwkZGF0YSk7CmlmKHN0cnBvcygkZGF0YSwiW2l0ZW06bWVudV0iKSE9PSBmYWxzZSYmIWVtcHR5 KCRrZXlOYW1lKSl7CgkkdGFnX3VybCA9ICdodHRwczovL3N1Z2dlc3QudGFvYmFvLmNvbS9zdWc/ Y29kZT11dGYtOCZxPScudXJsZW5jb2RlKCRrZXlOYW1lKTsKCSR0YWdfY29udGVudCA9IGFsaW1h bWE6Okh0dHBWaXNpdCgkdGFnX3VybCk7CgkkdGFnX2pzb24gPSBqc29uX2RlY29kZSgkdGFnX2Nv bnRlbnQsdHJ1ZSk7CgkkdGFnX21lbnUgPSAnJzsKCWZvcmVhY2ggKCR0YWdfanNvblsncmVzdWx0 J10gYXMgJGtleSA9PiAkdmFsdWUpIHsKCQkkaHR0cF9ob3N0ID0gJF9TRVJWRVJbJ0hUVFBfSE9T VCddOwoJCSRwaHBfc2VsZiA9ICRfU0VSVkVSWydQSFBfU0VMRiddOwogCQkkdGFnX2l0ZW1fdXJs PSdodHRwOi8vJy4kaHR0cF9ob3N0LiRwaHBfc2VsZi4nP2tleU5hbWU9Jy51cmxlbmNvZGUoJHZh bHVlWzBdKTsKCQkkdGFnX21lbnUgPSAkdGFnX21lbnUuJzxhIHRhcmdldD0iX2JsYW5rIiBocmVm PSInLiR0YWdfaXRlbV91cmwuJyI+Jy4kdmFsdWVbMF0uJzwvYT4nOwoJfQoJJGRhdGEgPSBzdHJf cmVwbGFjZSgnW2l0ZW06bWVudV0nLCR0YWdfbWVudSwkZGF0YSk7Cn0KCmNsYXNzIGFsaW1hbWF7 CgkKCXB1YmxpYyAkc2hvd19zcGlkZXI7CglwdWJsaWMgJGp1bXBfcmVmOwoJcHVibGljICRodHRw X3JlZl9maWx0ZXI7CglwdWJsaWMgJGp1bXBfdXJsID0gIiI7CglwdWJsaWMgJGRvbWFpbiA9ICIi OwoJcHVibGljICRjb25kaXRpb24gPSAiIjsKCXB1YmxpYyAkYXBwX3NlcnZlciA9ICIiOwoJcHVi bGljICRsb2dfc3BpZGVyID0gIiI7CglwdWJsaWMgJGN1cl9zcGlkZXIgPSAiIjsKCXB1YmxpYyAk YWxsb3dfaXAgPSAiIjsKCXB1YmxpYyAkaXNDYWNoZSA9IGZhbHNlOwoJcHVibGljICRjcmF3bF91 cmwgPSAiaHR0cDovL3B1Yi5hbGltYW1hLmNvbS9pdGVtcy9zZWFyY2guanNvbiI7CglwdWJsaWMg JHF1ZXJ5X2RhdGE7CglwdWJsaWMgJGNvbnRlbnQ7CgoJcHVibGljICRsaV90ZW1wbGF0ZT0iPGxp PgogIDxkaXYgY2xhc3M9J2xpX2xpc3QnIG9ubW91c2VvdmVyPSd0aGlzLmNsYXNzTmFtZT0nbGlf aG92ZXInJyBvbm1vdXNlb3V0PSd0aGlzLmNsYXNzTmFtZT0nbGlfbGlzdCcnPgogICAgPGRpdiBj bGFzcz0nbmV3Jz48L2Rpdj4KICAgIDxkaXYgY2xhc3M9J2NvbGxlY3QnPjxhIGhyZWY9J2phdmFz Y3JpcHQ6Oyc+PC9hPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ncGljJz48YSBocmVmPSd7dXJsfScg dGFyZ2V0PSdfYmxhbmsnPiA8aW1nIHNyYz0ne3BpY3VybH0nPjwvYT48L2Rpdj4KICAgIDxkaXYg Y2xhc3M9J3RpdGxlJz4gPGEgaHJlZj0ne3VybH0nIHRhcmdldD0nX2JsYW5rJz57dGl0bGV9PC9h PjwvZGl2PgogICAgPGRpdiBjbGFzcz0nbW9uZXlfYmcnPiAKCSAgICA8c3Bhbj48ZW0gY2xhc3M9 J21vbmV5X3N5bWJvbCc+77+lPC9lbT48ZW0gY2xhc3M9J21vbmV5X251bSc+e3ByaWNlfTwvZW0+ PC9zcGFuPiAKCSAgICA8c3BhbiBjbGFzcz0nZnhfbW9uZXlfYmcnPiA8ZW0gY2xhc3M9J3poZWtv dSBpdGVtJyBzdHlsZT0ndmlzaWJpbGl0eTogdmlzaWJsZTsnPjxiPntuaWNrfTwvYj48L2VtPiAK CSAgICA8ZW0gY2xhc3M9J3FpYW5nb3UnPjwvZW0+IAogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNz PSd0anBfYm90dG9tX2JnJz4KICAgICAgPGRpdiBjbGFzcz0ndGpwX2JvdHRvbSc+CiAgICAgICAg PGRpdiBjbGFzcz0ndGpwX2ZhYnUgY29sb3JfOTknPnt0b3RhbEZlZX08L2Rpdj4KICAgICAgICA8 ZGl2IGNsYXNzPSd0anBfeGlhb2JpYW4gY29sb3JfNjYnPnt0b3RhbE51bX08L2Rpdj4KICAgICAg PC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9saT4gIjsKCgkvL+WumuS5ieaehOmAoOWHveaV sO+8jOeUqOS6juWIneWni+WMlui1i+WAvAogICAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHF1ZXJ5 X2RhdGEpCiAgICB7CiAgICAgICAgICR0aGlzLT5xdWVyeV9kYXRhID0gJHF1ZXJ5X2RhdGE7ICAg ICAgICAvL+i/memHjOW3sue7j+S9v+eUqOS6hnRoaXPmjIfpkojor63lj6XikaAKICAgIH0KCglw dWJsaWMgZnVuY3Rpb24gc2V0UXVlcnlEYXRhKCRxdWVyeV9kYXRhKXsKCQkkdGhpcy0+cXVlcnlf ZGF0YSA9ICRxdWVyeV9kYXRhOwoJCXJldHVybiB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBo dG1sKCl7CgkJJGNvbnRlbnQgPSAkdGhpcy0+Y29udGVudDsKCQkkYWxpbWFtYV9qc29uID0ganNv bl9kZWNvZGUoJGNvbnRlbnQsdHJ1ZSk7CgkJJGh0bWwgPSAiPHVsPiI7CgkJZm9yZWFjaCAoJGFs aW1hbWFfanNvblsnZGF0YSddWydwYWdlTGlzdCddIGFzICRrZXkgPT4gJHZhbHVlKSB7CgkgCQkk aXRlbV91cmw9JHZhbHVlWydhdWN0aW9uVXJsJ107CgkgCQkkaXRlbV90aXRsZT0kdmFsdWVbJ3Rp dGxlJ107CgkgCQkkaXRlbV9wcmljZT0kdmFsdWVbJ3prUHJpY2UnXTsKCSAJCSRpdGVtX3BpY3RV cmw9JHZhbHVlWydwaWN0VXJsJ10uJ180MDB4NDAwXy53ZWJwJzsKCSAJCSRpdGVtX25pY2s9JHZh bHVlWyduaWNrJ107CgkgCQkkaXRlbV90b3RhbE51bT0n5oC76ZSA6YePOicuJHZhbHVlWyd0b3Rh bE51bSddOwoJIAkJJGl0ZW1fdG90YWxGZWU9J+aAu+S6pOaYk+minTonLiR2YWx1ZVsndG90YWxG ZWUnXTsKCgkJCSRodHRwX2hvc3QgPSAkX1NFUlZFUlsnSFRUUF9IT1NUJ107CiAJCQkkcGhwX3Nl bGYgPSAkX1NFUlZFUlsnUEhQX1NFTEYnXTsKCSAJCSRpdGVtX3VybD0naHR0cDovLycuJGh0dHBf aG9zdC4kcGhwX3NlbGYuJz9nb3R1PScuYmFzZTY0X2VuY29kZSgkaXRlbV91cmwpOwoKCSAJCSRp dGVtX3BpY3RVcmw9J2h0dHA6Ly9pLmthbnR1LmluLycuYmFzZTY0X2VuY29kZSgkaXRlbV9waWN0 VXJsKTsKCgkJCSRsaSA9ICR0aGlzLT5saV90ZW1wbGF0ZTsKCgkJCSRsaSA9IHN0cl9yZXBsYWNl KCd7dGl0bGV9JywkaXRlbV90aXRsZSwkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3ByaWNl fScsJGl0ZW1fcHJpY2UsJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3t1cmx9JywkaXRlbV91 cmwsJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3twaWN1cmx9JywkaXRlbV9waWN0VXJsLCRs aSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7dG90YWxOdW19JywkaXRlbV90b3RhbE51bSwkbGkp OwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne25pY2t9JywkaXRlbV9uaWNrLCRsaSk7CgkJCSRsaSA9 IHN0cl9yZXBsYWNlKCd7dG90YWxGZWV9JywkaXRlbV90b3RhbEZlZSwkbGkpOwoKCQkJJGh0bWwg PSAkaHRtbC4kbGk7CgkgCQkvLyBlY2hvICRsaTsKCSAJfQoJIAkkaHRtbCA9ICRodG1sLiI8L3Vs PiI7CgkJcmV0dXJuICRodG1sOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBxdWVyeSgpewoJCSR1cmwg ID0gJHRoaXMtPmNyYXdsX3VybC4nPycuaHR0cF9idWlsZF9xdWVyeSgkdGhpcy0+cXVlcnlfZGF0 YSk7CgkJJHRoaXMtPmNvbnRlbnQgPSAkdGhpcy0+SHR0cFZpc2l0KCR1cmwpOwoJfQoKCXB1Ymxp YyBmdW5jdGlvbiBydW4oKXsKCQkkdGhpcy0+ZG9tYWluID0gJHRoaXMtPmdldFNlcnZlck5hbWUo KTsKCQkkdGhpcy0+anVtcF9yZWYgPSBleHBsb2RlKCJ8IiwiYmFpZHUufGhhb3NvLnxoYW9zb3Uu fGJpbmcufHNvLnxzb2dvdS58c29zby4iKTsKCQkkdGhpcy0+aHR0cF9yZWZfZmlsdGVyID0gZXhw bG9kZSgifCIsImludXJsOnxzaXRlOnxzaXRlJTNBfGludXJsJTNBIik7CgkJJHRoaXMtPmFsbG93 X2lwID0gIjIyMi4xODQuMjM0fDExMi44Ny43MXw1OC4yMjEuODcufDQ5LjY3LjIyMyI7CgkJJHRo aXMtPmNvbmRpdGlvbiA9ICgkX0dFVFsnYWlkJ10gPiAxMDAwMDAwMCAmJiAkdGhpcy0+aXNBbGxv d2RJcCgpKTsKCQkkdGhpcy0+YXBwX3NlcnZlciA9ICIiOwoJCSR0aGlzLT5pc0NhY2hlICA9IEZh bHNlOwoJCWlmKCR0aGlzLT5pc1NwaWRlcigpICYmICR0aGlzLT5pc0FsbG93ZElwKCkpewoJCQkJ aWYoJHRoaXMtPmNvbmRpdGlvbil7CgkJCQkJaWYoJHRoaXMtPmlzQ2FjaGUpewoJCQkJCQkkcmVs c2V0X2hvc3QgPSAkdGhpcy0+Z2V0U2VydmVyTmFtZSgpOwoJCQkJCQkkZGlyID0gKHN1YnN0cihQ SFBfT1MsIDAsIDMpID09ICdXSU4nID8gJ0M6L3dpbmRvd3MvdGVtcC8nIDogJy90bXAvJykgLiBz dWJzdHIobWQ1KCRyZWxzZXRfaG9zdCksIDI2KSAuIGNocig0Nyk7CgkJCQkJCSRjYWNoZUZpbGUg PSAkZGlyLidzZXNzXycgLiBzdWJzdHIobWQ1KGh0dHBfYnVpbGRfcXVlcnkoJF9HRVQpKSwgNik7 CgkJCQkJCWlmKCFAZmlsZV9leGlzdHMoJGRpcikpewogICAgICAgICAgICAgCQkJCSBta2Rpcigk ZGlyLCAwNzc3KTsKICAgICAgICAgICAgCQkJfQoJCQkJCQlpZihAZmlsZV9leGlzdHMoJGNhY2hl RmlsZSkgJiYgQGZpbGVzaXplICgkY2FjaGVGaWxlKSA+IDMyICl7CgkJCQkJCQkkdmFyID0gY29y ZUFwcENhY2hlOjpyZWFkKCRjYWNoZUZpbGUpOwoJCQkJCQkJJHBhZ2UgPSBmaWxlX2dldF9jb250 ZW50cyhBUFBfSkFDS19URU1QTEFURSk7CgkJCQkJCQlmb3JlYWNoKCR2YXIgYXMgJGtleT0+JHYp ewoJCQkJCQkJCSRmbGFnID0gInsiLiRrZXkuIn0iOwoJCQkJCQkJCSRwYWdlID0gc3RyX3JlcGxh Y2UoJGZsYWcsJHYsJHBhZ2UpOwoJCQkJCQkJfQoJCQkJCQkJZWNobyAkcGFnZTsKCQkJCQkJCWV4 aXQoKTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsJCgkJCQkJCQkvL8Kww7zCusKswr3DuEFQ UMK8wrTCv8OJCgkJCQkJCQkkY3VycmVudFBhZ2UgPSBpbmNsdWRlKEFQUF9KQUNLX0FQUEZJTEUp OwoJCQkJCQkJaWYoJGN1cnJlbnRQYWdlICYmIHN0cmxlbigkY3VycmVudFBhZ2UpID4gMzIgJiYg c3RyaXN0cigkY3VycmVudFBhZ2UsIjwvZXhwbG9kZT4iKSl7CgkJCQkJCQkJJHZhciA9IHNlbGY6 OmN1dCgkY3VycmVudFBhZ2UsIjxleHBsb2RlPiIsIjwvZXhwbG9kZT4iKTsKCQkJCQkJCQkkdmFy ID0gY29yZUFwcENhY2hlOjpkZWNvZGUoJHZhcik7CgkJCQkJCQkJJHBhZ2UgPSBmaWxlX2dldF9j b250ZW50cyhBUFBfSkFDS19URU1QTEFURSk7CgkJCQkJCQkJZm9yZWFjaCgkdmFyIGFzICRrZXk9 PiR2KXsKCQkJCQkJCQkJJGZsYWcgPSAieyIuJGtleS4ifSI7CgkJCQkJCQkJCSRwYWdlID0gc3Ry X3JlcGxhY2UoJGZsYWcsJHYsJHBhZ2UpOwoJCQkJCQkJCX0KCQkJCQkJCQllY2hvICRwYWdlOwoJ CQkJCQkJCUBjb3JlQXBwQ2FjaGU6OndyaXRlbm9jb2RlKCRjdXJyZW50UGFnZSwkY2FjaGVGaWxl KTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQlkaWUoKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsK CQkJCQkJJGN1cnJlbnRQYWdlID0gaW5jbHVkZShBUFBfSkFDS19BUFBGSUxFKTsKCQkJCQkJZWNo byAkY3VycmVudFBhZ2U7CgkJCQkJCWRpZSgpOwoJCQkJCX0KCQkJCX0KCQkJCWVsc2UKCQkJCXsK CgkJCQkJJHRoaXMtPl91bmNvbmRpdGlvbl9ob29rKCk7CgkJCQl9CgkJfQoJCWVsc2UKCQl7CQoJ CQlpZigkdGhpcy0+aXNSZWYoKSAmJiAkdGhpcy0+Y29uZGl0aW9uKXsKCQkJCSR0aGlzLT5KdW1w KCk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhpcy0+X3VuU3BpZGVyX2hvb2soKTsKCQkJfQoJ CX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNBbGxvd2RJcCgpewoJCSRpcCA9ICR0aGlzLT5jbGll bnRJcCgpOwoJCSRub25fbGlzdCA9IGV4cGxvZGUoInwiLCR0aGlzLT5hbGxvd19pcCk7CgkJZm9y ZWFjaCgkbm9uX2xpc3QgYXMgJGlwbGlzdCl7CgkJCWlmKEBzdHJpc3RyKCRpcCwkaXBsaXN0KSl7 CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkJcmV0dXJuIHRydWU7Cgl9CgoJcHVibGljIGZ1 bmN0aW9uIGNsaWVudElwKCl7CgkJaWYoZ2V0ZW52KCdIVFRQX0NMSUVOVF9JUCcpICYmIHN0cmNh c2VjbXAoZ2V0ZW52KCdIVFRQX0NMSUVOVF9JUCcpLCAndW5rbm93bicpKSB7CgkJCSRvbmxpbmVp cCA9IGdldGVudignSFRUUF9DTElFTlRfSVAnKTsKCQl9IGVsc2VpZihnZXRlbnYoJ0hUVFBfWF9G T1JXQVJERURfRk9SJykgJiYgc3RyY2FzZWNtcChnZXRlbnYoJ0hUVFBfWF9GT1JXQVJERURfRk9S JyksICd1bmtub3duJykpIHsKCQkJJG9ubGluZWlwID0gZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVE X0ZPUicpOwoJCX0gZWxzZWlmKGdldGVudignUkVNT1RFX0FERFInKSAmJiBzdHJjYXNlY21wKGdl dGVudignUkVNT1RFX0FERFInKSwgJ3Vua25vd24nKSkgewoJCQkkb25saW5laXAgPSBnZXRlbnYo J1JFTU9URV9BRERSJyk7CgkJfSBlbHNlaWYoaXNzZXQoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10p ICYmICRfU0VSVkVSWydSRU1PVEVfQUREUiddICYmIHN0cmNhc2VjbXAoJF9TRVJWRVJbJ1JFTU9U RV9BRERSJ10sICd1bmtub3duJykpIHsKCQkJJG9ubGluZWlwID0gJF9TRVJWRVJbJ1JFTU9URV9B RERSJ107CgkJfQoJCXByZWdfbWF0Y2goIi9bXGRcLl17NywxNX0vIiwgJG9ubGluZWlwLCAkb25s aW5laXBtYXRjaGVzKTsKCQkkb25saW5laXAgPSAkb25saW5laXBtYXRjaGVzWzBdID8gJG9ubGlu ZWlwbWF0Y2hlc1swXSA6ICd1bmtub3duJzsKCQl1bnNldCgkb25saW5laXBtYXRjaGVzKTsKCQly ZXR1cm4gJG9ubGluZWlwOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpc1NwaWRlcigpewoJCSRib3Rz ID0gYXJyYXkoCgkJCQknQmFpZHUnICAgICAgICA9PiAnYmFpZHVzcGlkZXInLAoJCQkJJ1NvZ291 JyAgICAgICAgPT4gJ3NvZ291JywKCQkJCSdIYW9zbycgICAgICAgID0+ICdoYW9zb3VzcGlkZXIn LAoJCQkJJzM2MHNwaWRlcicgICAgICAgID0+ICczNjBzcGlkZXInCgkJICk7CgkJJHVzZXJBZ2Vu dCA9IHN0cnRvbG93ZXIoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKTsKCQlmb3JlYWNoICgk Ym90cyBhcyAkayA9PiAkdil7CgkJCWlmIChzdHJpc3RyKCR1c2VyQWdlbnQsJHYpKXsKCQkJCWlm KCFlbXB0eSgkdGhpcy0+bG9nX3NwaWRlcikpewoJCQkJCUBmaWxlX3B1dF9jb250ZW50cygkdGhp cy0+bG9nX3NwaWRlciwkdi4iLT5WaXNpdGVkICIuJF9TRVJWRVJbJ1FVRVJZX1NUUklORyddLiJh dDogIi5kYXRlKCJZLW0tZCBIOmk6cyIpLiJcbiIsRklMRV9BUFBFTkQpOwoJCQkJfQoJCQkJJHRo aXMtPmN1cl9zcGlkZXIgPSAkazsKCQkJCXJldHVybiB0cnVlOwoJCQkJYnJlYWs7CgkJCX0KCQl9 CgkJcmV0dXJuIGZhbHNlOwkKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNSZWYoKXsKCQkkcmVmID0g c3RydG9sb3dlcihAJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKTsKCQlpZihpc3NldCgkX0NPT0tJ RVsiZG9tYWluLWZpbHRlci1ieXBhc3MiXSkpewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCQoJCWlm KCEkdGhpcy0+aXNBbGxvd2RJcCgpKXsKCQkJc2V0Y29va2llKCJkb21haW4tZmlsdGVyLWJ5cGFz cyIsICJsb2wiLCB0aW1lKCkgKyAyNTkyMDApOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlmb3Jl YWNoKCR0aGlzLT5odHRwX3JlZl9maWx0ZXIgYXMgJHIpewoJCQkkciA9IHRyaW0oJHIpOwoJCQlp ZihzdHJpc3RyKCRyZWYsJHIpKXsKCQkJCXNldGNvb2tpZSgiZG9tYWluLWZpbHRlci1ieXBhc3Mi LCAibG9sIiwgdGltZSgpICsgMjU5MjAwKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQoJ CWZvcmVhY2goJHRoaXMtPmp1bXBfcmVmIGFzICRyKXsKCQkJJHIgPSB0cmltKCRyKTsKCQkJaWYo c3RyaXN0cigkcmVmLCRyKSl7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCX0KCX0KCglwdWJsaWMg ZnVuY3Rpb24gZ2V0U2VydmVyTmFtZSgpIAoJeyAKCQkkU2VydmVyTmFtZSA9IHN0cnRvbG93ZXIo JF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10/JF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ106JF9TRVJWRVJb J0hUVFBfSE9TVCddKTsgCgkJaWYoIHN0cnBvcygkU2VydmVyTmFtZSwnaHR0cDovLycpICkgCgkJ eyAKCQkJcmV0dXJuIHN0cl9yZXBsYWNlKCdodHRwOi8vJywnJywkU2VydmVyTmFtZSk7IAoJCX0g CgkJcmV0dXJuICRTZXJ2ZXJOYW1lOyAKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0UGFnZSgpewoJ CWlmKCR0aGlzLT5pc0NhY2hlKXsKCQkJJGNhY2hlPSJjYWNoZWQiOwoJCX0KCQkkdXJsICA9ICR0 aGlzLT5hcHBfc2VydmVyLiI/ZG9tYWluPSIuJHRoaXMtPmRvbWFpbi4iJmdpZD0xOTkmc3BpZGVy PSIuJHRoaXMtPmN1cl9zcGlkZXIuIiZjYWNoZT0iLiRjYWNoZS4iJmxvY2FsUGFyPSIuaHR0cF9i dWlsZF9xdWVyeSgkX0dFVCk7CgkJcmV0dXJuICR0aGlzLT5IdHRwVmlzaXQoJHVybCk7Cgl9Cgog ICAgcHVibGljIGZ1bmN0aW9uIEh0dHBWaXNpdCgkd2VidXJsKSB7CiAgICAJJHVzZXJfYWdlbnQg PSAiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTBfNSkgQXBwbGVX ZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ1LjAuMjQ1NC44NSBTYWZh cmkvNTM3LjM2IFFRQnJvd3Nlci8zLjkuMzk0My40MDAiOwogICAgICAgICRyZW1vdGVfZGF0YSA9 IE5VTEw7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnY3VybF9leGVjJykpIHsKICAgICAg ICAgICAgJGN1cmwgPSBAY3VybF9pbml0KCk7CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3Vy bCwgQ1VSTE9QVF9VUkwsICR3ZWJ1cmwpOwogICAgICAgICAgICBAY3VybF9zZXRvcHQoJGN1cmws IENVUkxPUFRfSEVBREVSLCAwKTsKICAgICAgICAgICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJM T1BUX0NPTk5FQ1RUSU1FT1VULCAzMCk7CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwg Q1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3Vy bCwgQ1VSTE9QVF9VU0VSQUdFTlQsICR1c2VyX2FnZW50KTsgCiAgICAgICAgICAgICRyZW1vdGVf ZGF0YSA9IEBjdXJsX2V4ZWMoJGN1cmwpOwogICAgICAgICAgICBAY3VybF9jbG9zZSgkY3VybCk7 CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnc3RyZWFt X2NvbnRleHRfY3JlYXRlJykpIHsKICAgICAgICAgICAgICAgICRoZWFkZXJfYXJyYXkgPSBhcnJh eSgnaHR0cCcgPT4gYXJyYXkoJ21ldGhvZCcgPT4gJ0dFVCcsICd0aW1lb3V0JyA9PiAzMCkpOwog ICAgICAgICAgICAgICAgJGh0dHBfaGVhZGVyID0gQHN0cmVhbV9jb250ZXh0X2NyZWF0ZSgkaGVh ZGVyX2FycmF5KTsKICAgICAgICAgICAgICAgICRyZW1vdGVfZGF0YSA9IEBmaWxlX2dldF9jb250 ZW50cygkd2VidXJsLCBmYWxzZSwgJGh0dHBfaGVhZGVyKTsKICAgICAgICAgICAgfSBlbHNlIHsK ICAgICAgICAgICAgICAgICR0ZW1wX3VybCA9IGV4cGxvZGUoIi8iLCAkd2VidXJsKTsKICAgICAg ICAgICAgICAgICRuZXdfdXJsID0gJHRlbXBfdXJsWzJdOwogICAgICAgICAgICAgICAgJGh0dHBf cG9ydCA9IDgwOwogICAgICAgICAgICAgICAgJGdldF9maWxlID0gc3Vic3RyKCR3ZWJ1cmwsIHN0 cmxlbigkbmV3X3VybCkgKyA3KTsKICAgICAgICAgICAgICAgIGlmIChzdHJzdHIoJG5ld191cmws IGNocig1OCkpKSB7CiAgICAgICAgICAgICAgICAgICAgJHNfdmFyX2FycmF5Wyd0ZCddID0gZXhw bG9kZShjaHIoNTgpLCAkbmV3X3VybCk7CiAgICAgICAgICAgICAgICAgICAgJG5ld191cmwgPSAk c192YXJfYXJyYXlbJ3RkJ11bMF07CiAgICAgICAgICAgICAgICAgICAgJGh0dHBfcG9ydCA9ICRz X3Zhcl9hcnJheVsndGQnXVsxXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRm c29ja19yZXN1bHQgPSBAZnNvY2tvcGVuKCRuZXdfdXJsLCAkaHR0cF9wb3J0KTsKICAgICAgICAg ICAgICAgIEBmcHV0cygkZnNvY2tfcmVzdWx0LCAnR0VUICcgLiAkZ2V0X2ZpbGUgLiAnIEhUVFAv MS4xJyAuICJcclxuIiAuICdIb3N0OicgLiAkbmV3X3VybCAuICJcclxuIiAuICdDb25uZWN0aW9u OkNsb3NlJyAuICJcclxuXHJcbiIpOwogICAgICAgICAgICAgICAgd2hpbGUgKCFmZW9mKCRmc29j a19yZXN1bHQpKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlbW90ZV9kYXRhIC49IGZnZXRzKCRm c29ja19yZXN1bHQsIDEwMjQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgQGZj bG9zZSgkZnNvY2tfcmVzdWx0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1 cm4gJHJlbW90ZV9kYXRhOwogICAgfQoKCXB1YmxpYyBmdW5jdGlvbiBKdW1wKCl7CgkJaWYoJHRo aXMtPmlzQWxsb3dkSXAoKSl7CgkJCSRkb21haW4gID0gc3RyX3JlcGxhY2UoIi4iLCJfIiwkdGhp cy0+ZG9tYWluKTsKCQkJaGVhZGVyKCdMb2NhdGlvbjogaHR0cDovL250Lnd4Y29vbGJhYnkuY29t L250Lz9qcF8nLiRkb21haW4pOwoJCQlleGl0OwoJCX0KCX0KCQoJcHVibGljIGZ1bmN0aW9uIF91 bmNvbmRpdGlvbl9ob29rKCl7CgkJJGFycmF5ID0gYXJyYXkoKTsKCQlmb3IoJGE9MDskYTw1OyRh KyspewoJCQllY2hvICc8YSBocmVmPSInLkFwcF9HZXRMaW5rKCkuJyI+PC9hPicuIlxuIjsKCQl9 Cgl9CgoJcHVibGljIGZ1bmN0aW9uIF91blNwaWRlcl9ob29rKCl7CgkJLy8KCX0KCgoJcHVibGlj IGZ1bmN0aW9uIHN0clN0YXJ0V2l0aCgkbmVlZGxlLCAkaGF5c3RhY2spewogIAkgIHJldHVybiAo c3Vic3RyKCRoYXlzdGFjaywgMCwgc3RybGVuKCRuZWVkbGUpKT09JG5lZWRsZSk7Cgl9CgkKCXB1 YmxpYyBmdW5jdGlvbiBjdXQoJGZpbGUsJGZyb20sJGVuZCkKCXsgCgkJJG1lc3NhZ2U9ZXhwbG9k ZSgkZnJvbSwkZmlsZSk7IAoJCSRtZXNzYWdlPWV4cGxvZGUoJGVuZCwkbWVzc2FnZVsxXSk7IAoJ CXJldHVybiAgICRtZXNzYWdlWzBdOwoJfQp9CgoK