準備
自分のPCまたは教室のPC
ログイン
ウェッブ・ブラウザー(Google Chrome など)を起動
RStudio を起動
第3週
12/21(TH) 不平等を無くすために何をするべきか1
不平等を無くすために何をするべきか2
講義では、所得の世界的格差の現状を踏まえて、高所得者に対する資産課税、金融取引税の可能性について議論します。
01/09(TU) Rでデータサイエンス3:GNI係数と所得分布 [Main]
講義 12月21日(木)不平等を無くすために何をするべきか
World Inequality Report 2022 [Link]
Chapter 5 Half the sky? The Female Labor Income Share in a Global
Perspective [Link]
Chapter 7 The road to redistributing wealth [Link]
Chapter 8 Taxing Multinationals or Taxing Wealthy Individuals?
[Link]
Chapter 9 Global vs Unilateral Perspectives on Tax Justice [Link]
Chapter 10 Emancipation, redistribution and sustainability [Link]
演習 1月9日(火)GNI係数と所得分布
世界開発指標(WDI)[Link]
> 貧困と不平等(Poverty and Inequality)>
所得または消費の分配(Distribution of income or
consumption)
GINI 指数 (世界銀行推計):SI.POV.GINI [Link]
下位 10% が占める所得シェア:SI.DST.FRST.10 [Link]
下位 20% が占める所得シェア:SI.DST.FRST.20 [Link]
2番目の 20% が占める収入シェア:SI.DST.02ND.20 [Link]
3番目の 20% が占める収入シェア :SI.DST.03RD.20 [Link]
4番目の 20% が占める収入シェア:SI.DST.04TH.20 [Link]
上位 20% が占める収入シェア:SI.DST.05TH.20 [Link]
上位 10% が占める収入シェア:SI.DST.10TH.10 [Link]
経済学とはなんだろう(私見)
お金(貨幣)に関係する活動から世界を理解する学問!?
貨幣の三つの機能:価値尺度機能(a unit of
account)・交換機能(medium of exchange)・価値貯蔵機能(a store of
value)
社会の問題を数値化して分析が可能
数値化しにくい(現在では適切に)数値化できない課題もたくさんある。見えやすい部分を絶対化して、見えにくい部分を無視するおそれが常にある。(Gapminder:
Dollar Street)
前回(12月19日)の復習
パッケージ(Package)の利用:
データの取得:WDI(indicator = c(pop = "SP.POP.TOTL"))
特定の行の取得:filter(), drop_na(), distinct()
折れ線グラフ
ggplot(aes(x = year, y = pop) + geom_line()
ggplot(aes(x = year, y = pop, col = country) + geom_line()
まとめ
パッケージ(Package)の利用:
データの取得:WDI(indicator = c(gini = "SI.POV.GINI",`0-10` = "SI.DST.FRST.10",...,`90-100` = "SI.DST.10TH.10"))
特定の行の取得:filter(), drop_na(), distinct()
特定の列の取得:select()
変形 Long Table, Wide Table:pivot_longer()
列の追加:mutate()
まとめ(可視化)
棒グラフ
ggplot(aes(year)) + geom_bar()
ggplot(aes(levels, value)) + geom_col()
ggplot(aes(x = levels, y = value, fill = country)) + geom_col(position = "dodge")
ggplot(aes(x = gini, fill = region)) + geom_histogram()
散布図(+回帰直線)
ggplot(aes(gini, 90-100)) + geom_point()
ggplot(aes(gini, 80-100)) + geom_point() + geom_smooth(formula = 'y ~ x', method = "lm")
課題
ジニって何!? 練習1〜練習6
ジニ指数と所得分布 練習1〜練習3
提出はしなくて良いですが、ぜひ実際に手を動かして実行してください。
参考文献
「みんなのデータサイエンス - Data Science for All」[はじめてのデータサイエンス]
- 導入として、GDP(国内総生産)のデータを使って説明しています。
Posit Recipes(旧 Posit Primers): The Basics
対話型の演習サイトの最初 [Link]
Posit Cheat Sheet. 早見表です。印刷して使うために、PDF
も提供しています。[Site
Link]
DataCamp Cheat Sheet: Tidyverse for Biginners.
データサイエンスの教育をしている会社の早見表の一つです。基本が簡単にまとまっています。[Link]
LS0tCnRpdGxlOiAiR0VTIDAwMSDmvJTnv5IzIgphdXRob3I6ICJILiBTdXp1a2kiCmRhdGU6ICIyMDI05bm0MeaciDnml6UiCm91dHB1dDoKICBodG1sX25vdGVib29rOiBkZWZhdWx0CiAgaHRtbF9kb2N1bWVudDoKICAgIGRmX3ByaW50OiBwYWdlZAogIGlvc2xpZGVzX3ByZXNlbnRhdGlvbjoKICAgIHdpZGVzY3JlZW46IHRydWUKICAgIGRmX3ByaW50OiBwYWdlZAotLS0KCiMjIOa6luWCmQoKLSAgIOiHquWIhuOBrlBD44G+44Gf44Gv5pWZ5a6k44GuUEMKCiAgICAxLiAg44Ot44Kw44Kk44OzCgogICAgMi4gIOOCpuOCp+ODg+ODluODu+ODluODqeOCpuOCtuODvO+8iEdvb2dsZSBDaHJvbWUg44Gq44Gp77yJ44KS6LW35YuVCgogICAgICAgIC0gICBNb29kbGUg44GuIEdFUzAwMSDntYzmuIjjgajntYzmuIjlrabjga7jgrXjgqTjg4jjgYvjgonjgIHjgZPjga7jgrnjg6njgqTjg4njga7jg5rjg7zjgrjjgpLooajnpLrvvIjjg6rjg7Pjgq/jgIxS44Gn44OH44O844K/44K144Kk44Ko44Oz44K544CN44Gu56ysMumAse+8iQoKICAgICAgICAtICAg77yI5Yil44Gu44K/44OW44G+44Gf44GvIOOCpuOCo+ODs+ODieOCpuOBp++8iVBvc2l0Q2xvdWQg44Gr44Ot44Kw44Kk44Oz77yI44Ki44Kr44Km44Oz44OI44Gu44Gq44GE5Lq644Gv44K144Kk44Oz44O744Ki44OD44OX77yJW1tQb3NpdC5jbG91ZF0oaHR0cHM6Ly9wb3NpdC5jbG91ZC8pXeODu1tb5YWx5pyJ44OX44Ot44K444Kn44Kv44OIXShodHRwczovL3Bvc2l0LmNsb3VkL2NvbnRlbnQvNTUzOTc2MyldCgogICAgMy4gIFJTdHVkaW8g44KS6LW35YuVCgogICAgICAgIC0gICDoh6rliIbjga5QQ+OBq1Ig44GoIFJTdHVkaW8g44KS44Kk44Oz44K544OI44O844Or44GX44Gm44GE44Gq44GE44Gy44Go44Gv5LiN6KaB44CCCgogICAgICAgIC0gICDjgqTjg7Pjgrnjg4jjg7zjg6vjgavjgaTjgYTjgabjga/jgIHop6Poqqzjgajjg5Pjg4fjgqrlj4LnhafjgIJbW+ino+iqrOODquODs+OCr10oaHR0cHM6Ly9wb3NpdC5jby9kb3dubG9hZC9yc3R1ZGlvLWRlc2t0b3AvKV3jg7tbW+ODk+ODh+OCql0oaHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1ROFRwQy1lME1mZyldCgojIyDnrKwz6YCxCgoxMi8yMShUSCnjgIDkuI3lubPnrYnjgpLnhKHjgY/jgZnjgZ/jgoHjgavkvZXjgpLjgZnjgovjgbnjgY3jgYsxCgrjgIDjgIDjgIDjgIDjgIAgwqDkuI3lubPnrYnjgpLnhKHjgY/jgZnjgZ/jgoHjgavkvZXjgpLjgZnjgovjgbnjgY3jgYsyCgrorJvnvqnjgafjga/jgIHmiYDlvpfjga7kuJbnlYznmoTmoLzlt67jga7nj77nirbjgpLouI/jgb7jgYjjgabjgIHpq5jmiYDlvpfogIXjgavlr77jgZnjgovos4fnlKPoqrLnqI7jgIHph5Hono3lj5blvJXnqI7jga7lj6/og73mgKfjgavjgaTjgYTjgaborbDoq5bjgZfjgb7jgZnjgIIKCjAxLzA5KFRVKeOAgFLjgafjg4fjg7zjgr/jgrXjgqTjgqjjg7Pjgrkz77yaR05J5L+C5pWw44Go5omA5b6X5YiG5biD44CAIFtbTWFpbl0oaHR0cHM6Ly9kcy1zbC5naXRodWIuaW8vaW50cm8yci9nZXMwMDEvaW5kZXguaHRtbCldCgojIyDorJvnvqkgMTLmnIgyMeaXpe+8iOacqO+8ieS4jeW5s+etieOCkueEoeOBj+OBmeOBn+OCgeOBq+S9leOCkuOBmeOCi+OBueOBjeOBiwoKIyMjIFdvcmxkIEluZXF1YWxpdHkgUmVwb3J0IDIwMjIgW1tMaW5rXShodHRwczovL3dpcjIwMjIud2lkLndvcmxkKV0KCi0gICBDaGFwdGVyIDUgSGFsZiB0aGUgc2t5PyBUaGUgRmVtYWxlIExhYm9yIEluY29tZSBTaGFyZSBpbiBhIEdsb2JhbCBQZXJzcGVjdGl2ZSBbW0xpbmtdKGh0dHBzOi8vd2lyMjAyMi53aWQud29ybGQvY2hhcHRlci01LyldCgotICAgQ2hhcHRlciA3IFRoZSByb2FkIHRvIHJlZGlzdHJpYnV0aW5nIHdlYWx0aCBbW0xpbmtdKGh0dHBzOi8vd2lyMjAyMi53aWQud29ybGQvY2hhcHRlci03LyldCgotICAgQ2hhcHRlciA4IFRheGluZyBNdWx0aW5hdGlvbmFscyBvciBUYXhpbmcgV2VhbHRoeSBJbmRpdmlkdWFscz8gW1tMaW5rXShodHRwczovL3dpcjIwMjIud2lkLndvcmxkL2NoYXB0ZXItOC8pXQoKLSAgIENoYXB0ZXIgOSBHbG9iYWwgdnMgVW5pbGF0ZXJhbCBQZXJzcGVjdGl2ZXMgb24gVGF4IEp1c3RpY2UgW1tMaW5rXShodHRwczovL3dpcjIwMjIud2lkLndvcmxkL2NoYXB0ZXItOS8pXQoKLSAgIENoYXB0ZXIgMTAgRW1hbmNpcGF0aW9uLCByZWRpc3RyaWJ1dGlvbiBhbmQgc3VzdGFpbmFiaWxpdHkgW1tMaW5rXShodHRwczovL3dpcjIwMjIud2lkLndvcmxkL2NoYXB0ZXItMTAvKV0KCiMjIOa8lOe/kiAx5pyIOeaXpe+8iOeBq++8iUdOSeS/guaVsOOBqOaJgOW+l+WIhuW4gwoK5LiW55WM6ZaL55m65oyH5qiZ77yIV0RJ77yJW1tMaW5rXShodHRwczovL2RhdGF0b3BpY3Mud29ybGRiYW5rLm9yZy93b3JsZC1kZXZlbG9wbWVudC1pbmRpY2F0b3JzLyldIFw+ICoq6LKn5Zuw44Go5LiN5bmz562J77yIUG92ZXJ0eSBhbmQgSW5lcXVhbGl0ee+8iVw+IOaJgOW+l+OBvuOBn+OBr+a2iOiyu+OBruWIhumFje+8iERpc3RyaWJ1dGlvbiBvZiBpbmNvbWUgb3IgY29uc3VtcHRpb27vvIkqKgoKR0lOSSDmjIfmlbAgKOS4lueVjOmKgOihjOaOqOioiCnvvJpTSS5QT1YuR0lOSSBbW0xpbmtdKGh0dHBzOi8vZGF0YS53b3JsZGJhbmsub3JnL2luZGljYXRvci9TSS5QT1YuR0lOSSldCgrkuIvkvY0gMTAlIOOBjOWNoOOCgeOCi+aJgOW+l+OCt+OCp+OCou+8mlNJLkRTVC5GUlNULjEwIFtbTGlua10oaHR0cHM6Ly9kYXRhYmFuay53b3JsZGJhbmsub3JnL21ldGFkYXRhZ2xvc3Nhcnkvd29ybGQtZGV2ZWxvcG1lbnQtaW5kaWNhdG9ycy9zZXJpZXMvU0kuRFNULkZSU1QuMTApXQoK5LiL5L2NIDIwJSDjgYzljaDjgoHjgovmiYDlvpfjgrfjgqfjgqLvvJpTSS5EU1QuRlJTVC4yMCBbW0xpbmtdKGh0dHBzOi8vZGF0YWJhbmsud29ybGRiYW5rLm9yZy9tZXRhZGF0YWdsb3NzYXJ5L3dvcmxkLWRldmVsb3BtZW50LWluZGljYXRvcnMvc2VyaWVzL1NJLkRTVC5GUlNULjIwKV0KCjLnlarnm67jga4gMjAlIOOBjOWNoOOCgeOCi+WPjuWFpeOCt+OCp+OCou+8mlNJLkRTVC4wMk5ELjIwIFtbTGlua10oaHR0cHM6Ly9kYXRhYmFuay53b3JsZGJhbmsub3JnL21ldGFkYXRhZ2xvc3Nhcnkvd29ybGQtZGV2ZWxvcG1lbnQtaW5kaWNhdG9ycy9zZXJpZXMvU0kuRFNULjAyTkQuMjApXQoKM+eVquebruOBriAyMCUg44GM5Y2g44KB44KL5Y+O5YWl44K344Kn44KiIO+8mlNJLkRTVC4wM1JELjIwIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL1NJLkRTVC4wM1JELjIwKV0KCjTnlarnm67jga4gMjAlIOOBjOWNoOOCgeOCi+WPjuWFpeOCt+OCp+OCou+8mlNJLkRTVC4wNFRILjIwIFtbTGlua10oaHR0cHM6Ly9kYXRhYmFuay53b3JsZGJhbmsub3JnL21ldGFkYXRhZ2xvc3Nhcnkvd29ybGQtZGV2ZWxvcG1lbnQtaW5kaWNhdG9ycy9zZXJpZXMvU0kuRFNULjA0VEguMjApXQoK5LiK5L2NIDIwJSDjgYzljaDjgoHjgovlj47lhaXjgrfjgqfjgqLvvJpTSS5EU1QuMDVUSC4yMCBbW0xpbmtdKGh0dHBzOi8vZGF0YS53b3JsZGJhbmsub3JnL2luZGljYXRvci9TSS5EU1QuMDVUSC4yMCldCgrkuIrkvY0gMTAlIOOBjOWNoOOCgeOCi+WPjuWFpeOCt+OCp+OCou+8mlNJLkRTVC4xMFRILjEwIFtbTGlua10oaHR0cHM6Ly9kYXRhLndvcmxkYmFuay5vcmcvaW5kaWNhdG9yL1NJLkRTVC4xMFRILjEwKV0KCiMjIOe1jOa4iOWtpuOBqOOBr+OBquOCk+OBoOOCjeOBhu+8iOengeimi++8iQoKLSAgIOOBiumHke+8iOiyqOW5o++8ieOBq+mWouS/guOBmeOCi+a0u+WLleOBi+OCieS4lueVjOOCkueQhuino+OBmeOCi+WtpuWVjyHvvJ8KCi0gICDosqjluaPjga7kuInjgaTjga7mqZ/og73vvJrkvqHlgKTlsLrluqbmqZ/og73vvIhhIHVuaXQgb2YgYWNjb3VudO+8ieODu+S6pOaPm+apn+iDve+8iG1lZGl1bSBvZiBleGNoYW5nZe+8ieODu+S+oeWApOiyr+iUteapn+iDve+8iGEgc3RvcmUgb2YgdmFsdWXvvIkKCiAgICAtICAgSUNVT0NXIOWyqeS6leWFi+S6uuWFiOeUn+OAjOizh+acrOS4u+e+qeOBqOekvuS8muOAjSBbW+ODquODs+OCr10oaHR0cHM6Ly9vY3cuaW5mby5pY3UuYWMuanAvZ2UvZ2VzMDAyXzIwMTNhKV3jg7tbW0lDVU9DV10oaHR0cHM6Ly9vY3cuaW5mby5pY3UuYWMuanAvaW5kZXgpXQoKLSAgIOekvuS8muOBruWVj+mhjOOCkuaVsOWApOWMluOBl+OBpuWIhuaekOOBjOWPr+iDvQoKLSAgIOaVsOWApOWMluOBl+OBq+OBj+OBhO+8iOePvuWcqOOBp+OBr+mBqeWIh+OBq++8ieaVsOWApOWMluOBp+OBjeOBquOBhOiqsumhjOOCguOBn+OBj+OBleOCk+OBguOCi+OAguimi+OBiOOChOOBmeOBhOmDqOWIhuOCkue1tuWvvuWMluOBl+OBpuOAgeimi+OBiOOBq+OBj+OBhOmDqOWIhuOCkueEoeimluOBmeOCi+OBiuOBneOCjOOBjOW4uOOBq+OBguOCi+OAgu+8iEdhcG1pbmRlcjogRG9sbGFyIFN0cmVldO+8iQoKICAgIC0gICDjgZPjga7jgZPjgajjgpLmhI/orZjjgZfjgabjgIHorJnomZrjgavjgIHjgaTjga3jgavlrabjgbPjgIHmjqLnqbbjgZfntprjgZHjgovjgZPjgajjgYzjgZ/jgYTjgZvjgaQKCiAgICAtICAg44CM44GC44KJ44KG44KL6LKq5qyy44Gr5rCX44KS44Gk44GR44CB55So5b+D44GX44Gq44GV44GE44CC44CN77yI6IGW5pu477ya44Or44Kr44Gr44KI44KL56aP6Z+z5pu4MTLnq6AxNeevgO+8iQoKIyMg44OV44Kh44Kk44Or44Oq44Oz44KvCgotICAgUG9zaXRDbG91ZCDlhbHmnInjg6rjg7Pjgq/vvJo8aHR0cHM6Ly9wb3NpdC5jbG91ZC9jb250ZW50LzU1Mzk3NjM+CgogICAgLSAgIOOCuOODi+OBo+OBpuS9le+8ge+8n++8iHdoYXRfaXNfZ2luaS5SbWTvvIkgW1vjg6rjg7Pjgq9dKGh0dHBzOi8vZHMtc2wuZ2l0aHViLmlvL2ludHJvMnIvZ2VzMDAxL3doYXRfaXNfZ2luaS5uYi5odG1sKV0sIFtbUm1kXShodHRwczovL2dpdGh1Yi5jb20vZHMtc2wvaW50cm8yci9ibG9iL21haW4vZG9jcy9nZXMwMDEvd2hhdF9pc19naW5pLlJtZCldCgogICAgLSAgIOOCuOODi+aMh+aVsOOBqOaJgOW+l+WIhuW4g++8iGdpbmkuUm1k77yJIFtb44Oq44Oz44KvXShodHRwczovL2RzLXNsLmdpdGh1Yi5pby9pbnRybzJyL2dlczAwMS9naW5pLm5iLmh0bWwpXSwgW1tSbWRdKGh0dHBzOi8vZ2l0aHViLmNvbS9kcy1zbC9pbnRybzJyL2Jsb2IvbWFpbi9kb2NzL2dlczAwMS9naW5pLlJtZCldCgogICAgICAgIC0gICDlj4LogIMxL+WPguiAgzLku5jvvIhnaW5pX2xvbmcuUm1k77yJIFtb44Oq44Oz44KvXShodHRwczovL2RzLXNsLmdpdGh1Yi5pby9pbnRybzJyL2dlczAwMS9naW5pX2xvbmcubmIuaHRtbCldCgotICAgUiBOb3RlYm9vayDjga7jgr3jg7zjgrnjg5XjgqHjgqTjg6vvvIhSbWTvvInjgpLlj5blvpfjgZnjgovkuInjgaTjga7mlrnms5UKCiAgICAxLiAgUG9zaXRDbG91ZCDlhbHmnInjg6rjg7Pjgq/jga4gZ2VzMDAxIOOBruODh+OCo+ODrOOCr+ODiOODqu+8iOODleOCqeODq+ODgOOBi+OCieaOouOBme+8ieODleOCoeOCpOODq+OCkumWi+OBjeOAgeWFqOS9k+OCkumBuOaKnuOBl+OBpuOCs+ODlOODvOOBl+OAgeiHquWIhuOBriBSU3R1ZGlvIOOBvuOBn+OBr+OAgVBvc2l0Q2xvdWQg44Gu44OV44Kh44Kk44Or44Gn44CBUk1hcmtkb3duIOODleOCoeOCpOODq+OCkuaWsOimj+S9nOaIkOOBl+ODmuODvOOCueODiAoKICAgIDIuICBSbWQg44Gu44Oq44Oz44Kv44KS44Kv44Oq44OD44Kv44GXIFJhdyDjga7mqKrjga4gQ29weSBhIHJhdyBmaWxlIOOBi+OCieOCs+ODlOODvOOAgeaWsOimjyBSTWFya2Rvd24g44OV44Kh44Kk44Or44KS5L2c5oiQ44GX44Oa44O844K544OICgogICAgMy4gIOODquODs+OCr+OCkumWi+OBjeOAgeWPs+S4iuOBriBDb2RlIOOBi+OCieOAgVJtZCDjg5XjgqHjgqTjg6vjgpLjg4Djgqbjg7Pjg63jg7zjg4njgajjgZfjgIHjgZ3jgozjgpLjgIHoh6rliIbjga4gUlN0dWRpbyDjgb7jgZ/jga/jgIFQb3NpdENsb3VkIOOBruODl+ODreOCuOOCp+OCr+ODiOOBq+enu+WLle+8iFVwbG9hZO+8iQoKIyMg5YmN5Zue77yIMTLmnIgxOeaXpe+8ieOBruW+qee/kgoKLSAgIOODkeODg+OCseODvOOCuO+8iFBhY2thZ2XvvInjga7liKnnlKjvvJoKCiAgICAtICAg44Kk44Oz44K544OI44O844Or77yIaW5zdGFsbGF0aW9u77yJ77yaVG9vbHMgXD4gSW5zdGFsbCBQYWNrYWdlcwoKICAgIC0gICDjg63jg7zjg4nvvIhsb2Fk77yJYGxpYnJhcnkodGlkeXZlcnNlKTsgbGlicmFyeShXREkpOyBsaWJyYXJ5KHNob3d0ZXh0KWAKCi0gICDjg4fjg7zjgr/jga7lj5blvpfvvJpgV0RJKGluZGljYXRvciA9IGMocG9wID0gIlNQLlBPUC5UT1RMIikpYAoKLSAgIOeJueWumuOBruihjOOBruWPluW+l++8mmBmaWx0ZXIoKSwgZHJvcF9uYSgpLCBkaXN0aW5jdCgpYAoKLSAgIOaKmOOCjOe3muOCsOODqeODlQoKICAgIC0gICBgZ2dwbG90KGFlcyh4ID0geWVhciwgeSA9IHBvcCkgKyBnZW9tX2xpbmUoKWAKCiAgICAtICAgYGdncGxvdChhZXMoeCA9IHllYXIsIHkgPSBwb3AsIGNvbCA9IGNvdW50cnkpICsgZ2VvbV9saW5lKClgCgojIyDjgb7jgajjgoEKCi0gICDjg5Hjg4PjgrHjg7zjgrjvvIhQYWNrYWdl77yJ44Gu5Yip55So77yaCgogICAgLSAgIOOCpOODs+OCueODiOODvOODq++8iGluc3RhbGxhdGlvbu+8ie+8mlRvb2xzIFw+IEluc3RhbGwgUGFja2FnZXMKCiAgICAtICAg44Ot44O844OJ77yIbG9hZO+8iWBsaWJyYXJ5KHRpZHl2ZXJzZSk7IGxpYnJhcnkoV0RJKTsgbGlicmFyeShEZXNjVG9vbHMpYAoKLSAgIOODh+ODvOOCv+OBruWPluW+l++8mmBgIFdESShpbmRpY2F0b3IgPSBjKGdpbmkgPSAiU0kuUE9WLkdJTkkiLGAwLTEwYCA9ICJTSS5EU1QuRlJTVC4xMCIsLi4uLGA5MC0xMDBgID0gIlNJLkRTVC4xMFRILjEwIikpIGBgCgotICAg54m55a6a44Gu6KGM44Gu5Y+W5b6X77yaYGZpbHRlcigpLCBkcm9wX25hKCksIGRpc3RpbmN0KClgCgotICAg54m55a6a44Gu5YiX44Gu5Y+W5b6X77yaYHNlbGVjdCgpYAoKLSAgIOWkieW9oiBMb25nIFRhYmxlLCBXaWRlIFRhYmxl77yaYHBpdm90X2xvbmdlcigpYAoKLSAgIOWIl+OBrui/veWKoO+8mmBtdXRhdGUoKWAKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyMjIOOBvuOBqOOCge+8iOWPr+imluWMlu+8iQoKLSAgIOajkuOCsOODqeODlQoKICAgIC0gICBgZ2dwbG90KGFlcyh5ZWFyKSkgKyBnZW9tX2JhcigpYAoKICAgIC0gICBgZ2dwbG90KGFlcyhsZXZlbHMsIHZhbHVlKSkgKyBnZW9tX2NvbCgpYAoKICAgIC0gICBgZ2dwbG90KGFlcyh4ID0gbGV2ZWxzLCB5ID0gdmFsdWUsIGZpbGwgPSBjb3VudHJ5KSkgKyBnZW9tX2NvbChwb3NpdGlvbiA9ICJkb2RnZSIpYAoKICAgIC0gICBgZ2dwbG90KGFlcyh4ID0gZ2luaSwgZmlsbCA9IHJlZ2lvbikpICsgZ2VvbV9oaXN0b2dyYW0oKWAKCi0gICDmlaPluIPlm7PvvIgr5Zue5biw55u057ea77yJCgogICAgLSAgIGBnZ3Bsb3QoYWVzKGdpbmksIDkwLTEwMCkpICsgZ2VvbV9wb2ludCgpYAoKICAgIC0gICBgZ2dwbG90KGFlcyhnaW5pLCA4MC0xMDApKSArIGdlb21fcG9pbnQoKSArIGdlb21fc21vb3RoKGZvcm11bGEgPSAneSB+IHgnLCBtZXRob2QgPSAibG0iKWAKCiMjIOiqsumhjAoK44K444OL44Gj44Gm5L2V77yB77yf44CA57e057+SMeOAnOe3tOe/kjYKCuOCuOODi+aMh+aVsOOBqOaJgOW+l+WIhuW4g+OAgOe3tOe/kjHjgJznt7Tnv5IzCgrmj5Dlh7rjga/jgZfjgarjgY/jgaboia/jgYTjgafjgZnjgYzjgIHjgZzjgbLlrp/pmpvjgavmiYvjgpLli5XjgYvjgZfjgablrp/ooYzjgZfjgabjgY/jgaDjgZXjgYTjgIIKCiMjIOWPguiAg+aWh+eMrgoKMS4gIOOAjOOBv+OCk+OBquOBruODh+ODvOOCv+OCteOCpOOCqOODs+OCuSAtIERhdGEgU2NpZW5jZSBmb3IgQWxs44CNW1vjga/jgZjjgoHjgabjga7jg4fjg7zjgr/jgrXjgqTjgqjjg7PjgrldKGh0dHBzOi8vaWN1LWhzdXp1a2kuZ2l0aHViLmlvL2RzNGFqL2ZpcnN0LWV4YW1wbGUuaHRtbCNmaXJzdC1leGFtcGxlKV0KCiAgICAtICAg5bCO5YWl44Go44GX44Gm44CBR0RQ77yI5Zu95YaF57eP55Sf55Sj77yJ44Gu44OH44O844K/44KS5L2/44Gj44Gm6Kqs5piO44GX44Gm44GE44G+44GZ44CCCgoyLiAgUG9zaXQgUmVjaXBlc++8iOaXpyBQb3NpdCBQcmltZXJz77yJOiBUaGUgQmFzaWNzIOWvvuipseWei+OBrua8lOe/kuOCteOCpOODiOOBruacgOWInSBbW0xpbmtdKGh0dHBzOi8vcG9zaXQuY2xvdWQvbGVhcm4vcmVjaXBlcyldCgozLiAgUG9zaXQgQ2hlYXQgU2hlZXQuIOaXqeimi+ihqOOBp+OBmeOAguWNsOWIt+OBl+OBpuS9v+OBhuOBn+OCgeOBq+OAgVBERiDjgoLmj5DkvpvjgZfjgabjgYTjgb7jgZnjgIJbW1NpdGUgTGlua10oaHR0cHM6Ly9yc3R1ZGlvLmdpdGh1Yi5pby9jaGVhdHNoZWV0cy8pXQoKNC4gIERhdGFDYW1wIENoZWF0IFNoZWV0OiBUaWR5dmVyc2UgZm9yIEJpZ2lubmVycy4g44OH44O844K/44K144Kk44Ko44Oz44K544Gu5pWZ6IKy44KS44GX44Gm44GE44KL5Lya56S+44Gu5pep6KaL6KGo44Gu5LiA44Gk44Gn44GZ44CC5Z+65pys44GM57Ch5Y2Y44Gr44G+44Go44G+44Gj44Gm44GE44G+44GZ44CCW1tMaW5rXShodHRwczovL2ltYWdlcy5kYXRhY2FtcC5jb20vaW1hZ2UvdXBsb2FkL3YxNjc2MzAyNjk3L01hcmtldGluZy9CbG9nL1RpZHl2ZXJzZV9DaGVhdF9TaGVldC5wZGYpXQo=