rabbit-slide-hasumikin-RubyConf2021 2021.11.08.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.rabbit +1 -0
- data/On-a-Keyboard-Ruby-on-Board--PicoRuby-and-PRK-Firmware.rab +816 -0
- data/README.rd +24 -0
- data/Rakefile +17 -0
- data/config.yaml +25 -0
- data/images/Multitasking.png +0 -0
- data/images/Multitasking_sandbox.png +0 -0
- data/images/Notepad.png +0 -0
- data/images/QR_prk_firmware.png +0 -0
- data/images/QR_raactivityreport.png +0 -0
- data/images/QR_raactivityreport_2.png +0 -0
- data/images/RAGrant.png +0 -0
- data/images/architecture_1.png +0 -0
- data/images/architecture_2.png +0 -0
- data/images/architecture_3.png +0 -0
- data/images/architecture_4.png +0 -0
- data/images/black.png +0 -0
- data/images/boot_button_1.png +0 -0
- data/images/crkbd.jpg +0 -0
- data/images/crkbd_2.jpg +0 -0
- data/images/drag_and_drop_1.png +0 -0
- data/images/drag_and_drop_2.png +0 -0
- data/images/firmware_logos.png +0 -0
- data/images/gem.gif +0 -0
- data/images/gem_32.gif +0 -0
- data/images/gem_40.gif +0 -0
- data/images/gem_48.gif +0 -0
- data/images/keyboard.rb.png +0 -0
- data/images/keycaps.png +0 -0
- data/images/kmk.jpg +0 -0
- data/images/matrix_claw44.jpg +0 -0
- data/images/matrix_helix.jpg +0 -0
- data/images/matrix_prk_firmware.jpg +0 -0
- data/images/meishi2.jpg +0 -0
- data/images/msc.png +0 -0
- data/images/picoruby.png +0 -0
- data/images/pipi_gherkin.jpg +0 -0
- data/images/pipigherkin_2.jpg +0 -0
- data/images/prk.png +0 -0
- data/images/promicro.jpg +0 -0
- data/images/promicro_rp2040.jpg +0 -0
- data/images/promicro_rp2040_boot_button.png +0 -0
- data/images/qmk.png +0 -0
- data/images/qmk_kmk_prk.png +0 -0
- data/images/qmk_kmk_prk_2.png +0 -0
- data/images/red_pill.png +0 -0
- data/images/red_pill_24.png +0 -0
- data/images/red_pill_32.png +0 -0
- data/images/red_pill_40.png +0 -0
- data/images/red_pill_48.png +0 -0
- data/images/regex_light.png +0 -0
- data/images/release.png +0 -0
- data/images/rpi_pico.jpg +0 -0
- data/images/shortage.jpg +0 -0
- data/images/shortage.png +0 -0
- data/images/switches.png +0 -0
- data/images/textedit.png +0 -0
- data/no_rabbit.rab +209 -0
- data/pdf/RubyConf2021-On-a-Keyboard-Ruby-on-Board--PicoRuby-and-PRK-Firmware.pdf +0 -0
- data/theme.rb +181 -0
- metadata +117 -0
data/README.rd
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
= On a Keyboard Ruby on Board: PicoRuby and PRK Firmware
|
2
|
+
|
3
|
+
Presentation slide for RubyConf 2021
|
4
|
+
|
5
|
+
== For author
|
6
|
+
|
7
|
+
=== Show
|
8
|
+
|
9
|
+
rake
|
10
|
+
|
11
|
+
=== Publish
|
12
|
+
|
13
|
+
rake publish
|
14
|
+
|
15
|
+
== For viewers
|
16
|
+
|
17
|
+
=== Install
|
18
|
+
|
19
|
+
gem install rabbit-slide-hasumikin-RubyConf2021
|
20
|
+
|
21
|
+
=== Show
|
22
|
+
|
23
|
+
rabbit rabbit-slide-hasumikin-RubyConf2021.gem
|
24
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require "rabbit/task/slide"
|
2
|
+
|
3
|
+
# Edit ./config.yaml to customize meta data
|
4
|
+
|
5
|
+
spec = nil
|
6
|
+
Rabbit::Task::Slide.new do |task|
|
7
|
+
spec = task.spec
|
8
|
+
# spec.files += Dir.glob("doc/**/*.*")
|
9
|
+
# spec.files -= Dir.glob("private/**/*.*")
|
10
|
+
# spec.add_runtime_dependency("rabbit-theme-YOUR-THEME")
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Tag #{spec.version}"
|
14
|
+
task :tag do
|
15
|
+
sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
|
16
|
+
sh("git", "push", "--tags")
|
17
|
+
end
|
data/config.yaml
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
---
|
2
|
+
id: RubyConf2021
|
3
|
+
base_name: On-a-Keyboard-Ruby-on-Board--PicoRuby-and-PRK-Firmware
|
4
|
+
source_code_uri: https://github.com/hasumikin/RubyConf2021
|
5
|
+
tags:
|
6
|
+
- PicoRuby
|
7
|
+
- RP2040
|
8
|
+
- microcontroller
|
9
|
+
presentation_date: '2021-11-08'
|
10
|
+
presentation_start_time:
|
11
|
+
presentation_end_time:
|
12
|
+
version: 2021.11.08.1
|
13
|
+
licenses: []
|
14
|
+
slideshare_id:
|
15
|
+
speaker_deck_id:
|
16
|
+
ustream_id:
|
17
|
+
vimeo_id:
|
18
|
+
youtube_id:
|
19
|
+
author:
|
20
|
+
markup_language: :rd
|
21
|
+
name: HASUMI Hitoshi
|
22
|
+
email: hasumikin@gmail.com
|
23
|
+
rubygems_user: hasumikin
|
24
|
+
slideshare_user:
|
25
|
+
speaker_deck_user:
|
Binary file
|
Binary file
|
data/images/Notepad.png
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/images/RAGrant.png
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/images/black.png
ADDED
Binary file
|
Binary file
|
data/images/crkbd.jpg
ADDED
Binary file
|
data/images/crkbd_2.jpg
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/images/gem.gif
ADDED
Binary file
|
data/images/gem_32.gif
ADDED
Binary file
|
data/images/gem_40.gif
ADDED
Binary file
|
data/images/gem_48.gif
ADDED
Binary file
|
Binary file
|
data/images/keycaps.png
ADDED
Binary file
|
data/images/kmk.jpg
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/images/meishi2.jpg
ADDED
Binary file
|
data/images/msc.png
ADDED
Binary file
|
data/images/picoruby.png
ADDED
Binary file
|
Binary file
|
Binary file
|
data/images/prk.png
ADDED
Binary file
|
data/images/promicro.jpg
ADDED
Binary file
|
Binary file
|
Binary file
|
data/images/qmk.png
ADDED
Binary file
|
Binary file
|
Binary file
|
data/images/red_pill.png
ADDED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/images/release.png
ADDED
Binary file
|
data/images/rpi_pico.jpg
ADDED
Binary file
|
data/images/shortage.jpg
ADDED
Binary file
|
data/images/shortage.png
ADDED
Binary file
|
data/images/switches.png
ADDED
Binary file
|
data/images/textedit.png
ADDED
Binary file
|
data/no_rabbit.rab
ADDED
@@ -0,0 +1,209 @@
|
|
1
|
+
= On a Keyboard Ruby on Board
|
2
|
+
: subtitle
|
3
|
+
PicoRuby and PRK Firmware
|
4
|
+
: author
|
5
|
+
hasumikin
|
6
|
+
: allotted-time
|
7
|
+
30m
|
8
|
+
: theme
|
9
|
+
no_rabbit
|
10
|
+
|
11
|
+
= ((' '))
|
12
|
+
|
13
|
+
= ((' '))
|
14
|
+
W
|
15
|
+
= ((' '))
|
16
|
+
Wa
|
17
|
+
= ((' '))
|
18
|
+
Wak
|
19
|
+
= ((' '))
|
20
|
+
Wake
|
21
|
+
= ((' '))
|
22
|
+
Wake
|
23
|
+
= ((' '))
|
24
|
+
Wake u
|
25
|
+
= ((' '))
|
26
|
+
Wake up
|
27
|
+
= ((' '))
|
28
|
+
Wake up,
|
29
|
+
= ((' '))
|
30
|
+
Wake up,
|
31
|
+
= ((' '))
|
32
|
+
Wake up, R
|
33
|
+
= ((' '))
|
34
|
+
Wake up, Ru
|
35
|
+
= ((' '))
|
36
|
+
Wake up, Rub
|
37
|
+
= ((' '))
|
38
|
+
Wake up, Ruby
|
39
|
+
= ((' '))
|
40
|
+
Wake up, Ruby.
|
41
|
+
= ((' '))
|
42
|
+
Wake up, Ruby..
|
43
|
+
= ((' '))
|
44
|
+
Wake up, Ruby...
|
45
|
+
|
46
|
+
= ((' '))
|
47
|
+
|
48
|
+
= ((' '))
|
49
|
+
T
|
50
|
+
= ((' '))
|
51
|
+
Th
|
52
|
+
= ((' '))
|
53
|
+
The
|
54
|
+
= ((' '))
|
55
|
+
The
|
56
|
+
= ((' '))
|
57
|
+
The M
|
58
|
+
= ((' '))
|
59
|
+
The Ma
|
60
|
+
= ((' '))
|
61
|
+
The Mat
|
62
|
+
= ((' '))
|
63
|
+
The Matr
|
64
|
+
= ((' '))
|
65
|
+
The Matri
|
66
|
+
= ((' '))
|
67
|
+
The Matr
|
68
|
+
= ((' '))
|
69
|
+
The Mat
|
70
|
+
= ((' '))
|
71
|
+
The Ma
|
72
|
+
= ((' '))
|
73
|
+
The M
|
74
|
+
= ((' '))
|
75
|
+
The Mi
|
76
|
+
= ((' '))
|
77
|
+
The Mic
|
78
|
+
= ((' '))
|
79
|
+
The Mico
|
80
|
+
= ((' '))
|
81
|
+
The Micon
|
82
|
+
= ((' '))
|
83
|
+
The Micon
|
84
|
+
= ((' '))
|
85
|
+
The Micon h
|
86
|
+
= ((' '))
|
87
|
+
The Micon ha
|
88
|
+
= ((' '))
|
89
|
+
The Micon has
|
90
|
+
= ((' '))
|
91
|
+
The Micon has
|
92
|
+
= ((' '))
|
93
|
+
The Micon has y
|
94
|
+
= ((' '))
|
95
|
+
The Micon has yo
|
96
|
+
= ((' '))
|
97
|
+
The Micon has you
|
98
|
+
= ((' '))
|
99
|
+
The Micon has you.
|
100
|
+
= ((' '))
|
101
|
+
The Micon has you..
|
102
|
+
= ((' '))
|
103
|
+
The Micon has you...
|
104
|
+
|
105
|
+
= ((' '))
|
106
|
+
|
107
|
+
= ((' '))
|
108
|
+
F
|
109
|
+
= ((' '))
|
110
|
+
Fo
|
111
|
+
= ((' '))
|
112
|
+
Fol
|
113
|
+
= ((' '))
|
114
|
+
Foll
|
115
|
+
= ((' '))
|
116
|
+
Follo
|
117
|
+
= ((' '))
|
118
|
+
Follow
|
119
|
+
= ((' '))
|
120
|
+
Follow
|
121
|
+
= ((' '))
|
122
|
+
Follow t
|
123
|
+
= ((' '))
|
124
|
+
Follow th
|
125
|
+
= ((' '))
|
126
|
+
Follow the
|
127
|
+
= ((' '))
|
128
|
+
Follow the
|
129
|
+
= ((' '))
|
130
|
+
Follow the w
|
131
|
+
= ((' '))
|
132
|
+
Follow the wh
|
133
|
+
= ((' '))
|
134
|
+
Follow the whi
|
135
|
+
= ((' '))
|
136
|
+
Follow the whit
|
137
|
+
= ((' '))
|
138
|
+
Follow the white
|
139
|
+
= ((' '))
|
140
|
+
Follow the white
|
141
|
+
= ((' '))
|
142
|
+
Follow the white r
|
143
|
+
= ((' '))
|
144
|
+
Follow the white ra
|
145
|
+
= ((' '))
|
146
|
+
Follow the white rab
|
147
|
+
= ((' '))
|
148
|
+
Follow the white rabb
|
149
|
+
= ((' '))
|
150
|
+
Follow the white rabbi
|
151
|
+
= ((' '))
|
152
|
+
Follow the white rabbit
|
153
|
+
= ((' '))
|
154
|
+
Follow the white rabbit.
|
155
|
+
|
156
|
+
= ((' '))
|
157
|
+
|
158
|
+
|
159
|
+
|
160
|
+
= HCENTER VCENTER MONO
|
161
|
+
(('tag:x-small:written and presented by'))
|
162
|
+
\n
|
163
|
+
HASUMIKIN
|
164
|
+
== prop
|
165
|
+
: background-image
|
166
|
+
images/black.png
|
167
|
+
: background-image-relative-width
|
168
|
+
110
|
169
|
+
|
170
|
+
= HCENTER VCENTER MONO
|
171
|
+
(('tag:x-small:supported by'))
|
172
|
+
\n
|
173
|
+
RUBY ASSOCIATION (('tag:x-small:and')) MONSTARLAB
|
174
|
+
== prop
|
175
|
+
: background-image
|
176
|
+
images/black.png
|
177
|
+
: background-image-relative-width
|
178
|
+
110
|
179
|
+
|
180
|
+
= HCENTER VCENTER MONO
|
181
|
+
(('tag:x-small:mentor'))
|
182
|
+
\n
|
183
|
+
MATZ
|
184
|
+
== prop
|
185
|
+
: background-image
|
186
|
+
images/black.png
|
187
|
+
: background-image-relative-width
|
188
|
+
110
|
189
|
+
|
190
|
+
= HCENTER VCENTER MONO
|
191
|
+
(('tag:x-small:follow the'))
|
192
|
+
# image
|
193
|
+
# src = images/picoruby.png
|
194
|
+
# relative_width = 20
|
195
|
+
== prop
|
196
|
+
: background-image
|
197
|
+
images/black.png
|
198
|
+
: background-image-relative-height
|
199
|
+
120
|
200
|
+
: background-image-relative-width
|
201
|
+
120
|
202
|
+
|
203
|
+
= HCENTER VCENTER MONO
|
204
|
+
(('tag:x-small:an')) ESSENTIALLY RUBY (('tag:x-small:production'))
|
205
|
+
== prop
|
206
|
+
: background-image
|
207
|
+
images/black.png
|
208
|
+
: background-image-relative-width
|
209
|
+
110
|
data/theme.rb
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
# puts font_families.sort
|
2
|
+
@xx_large_font_size = screen_size(13 * Pango::SCALE)
|
3
|
+
@x_large_font_size = screen_size(8 * Pango::SCALE)
|
4
|
+
@large_font_size = screen_size(6 * Pango::SCALE)
|
5
|
+
@normal_font_size = screen_size(5 * Pango::SCALE)
|
6
|
+
@small_font_size = screen_size(4 * Pango::SCALE)
|
7
|
+
@x_small_font_size = screen_size(3.5 * Pango::SCALE)
|
8
|
+
@xx_small_font_size = screen_size(3 * Pango::SCALE)
|
9
|
+
|
10
|
+
#@font_family = find_font_family('Oswald')
|
11
|
+
#@font_family = find_font_family('OCR A Extended')
|
12
|
+
@font_family = find_font_family('Courier Prime')
|
13
|
+
@monospace_font_family = 'OCR A Extended'
|
14
|
+
@title_font_family = find_font_family('antimatrix')
|
15
|
+
|
16
|
+
@default_headline_line_color = '#171714'
|
17
|
+
@default_headline_line_width = 0
|
18
|
+
@default_headline_line_expand = false
|
19
|
+
|
20
|
+
matrix_green_terminal = "#a9f9d5"
|
21
|
+
matrix_green_title = "#e2ffd6"
|
22
|
+
matrix_green_title_2 = "#00FFAF"
|
23
|
+
set_graffiti_color matrix_green_title
|
24
|
+
set_graffiti_line_width 8
|
25
|
+
|
26
|
+
#@table_frame_color = "#ffffff"
|
27
|
+
#@table_fill_color = "#0f0428"
|
28
|
+
#@table_body_frame_color = "#ffffff"
|
29
|
+
#@table_body_fill_color = "#3f3468"
|
30
|
+
#@table_head_frame_color = "#ffffff"
|
31
|
+
#@table_head_fill_color = "#rf0428"
|
32
|
+
|
33
|
+
@preformatted_fill_color = "#000000"
|
34
|
+
@preformatted_frame_color = matrix_green_title
|
35
|
+
# @preformatted_centering = true
|
36
|
+
@space = screen_y(1)
|
37
|
+
|
38
|
+
@image_slide_number_show_flag = false
|
39
|
+
#@image_slide_number_image = "images/black.png"
|
40
|
+
@image_timer_image = "images/black.png"
|
41
|
+
|
42
|
+
include_theme('default')
|
43
|
+
|
44
|
+
match Slide, HeadLine do |heads|
|
45
|
+
heads.prop_set("size", @large_font_size)
|
46
|
+
heads.prop_set("weight", "bold")
|
47
|
+
end
|
48
|
+
match Slide do |slides|
|
49
|
+
#slides.prop_set("foreground", "#171714")
|
50
|
+
slides.prop_set "foreground", matrix_green_terminal
|
51
|
+
end
|
52
|
+
|
53
|
+
@slide_headline_hide = true
|
54
|
+
match TitleSlide do |slides|
|
55
|
+
#slides.margin_left = 900
|
56
|
+
slides.vertical_centering = true
|
57
|
+
#slides.prop_set "foreground", "#171714"
|
58
|
+
slides.prop_set "foreground", matrix_green_title
|
59
|
+
slides.prop_set "font-family", "antimatrix"
|
60
|
+
slides.prop_set("weight", "bold")
|
61
|
+
end
|
62
|
+
match TitleSlide, Title do |title|
|
63
|
+
title.margin_top = 220
|
64
|
+
title.prop_set("size", @xx_large_font_size)
|
65
|
+
end
|
66
|
+
match TitleSlide, Subtitle do |subtitle|
|
67
|
+
subtitle.margin_top = 0
|
68
|
+
subtitle.prop_set("size", screen_size(7 * Pango::SCALE))
|
69
|
+
end
|
70
|
+
match TitleSlide, Author do |author|
|
71
|
+
author.margin_top = 150
|
72
|
+
author.prop_set("weight", "normal")
|
73
|
+
author.prop_set("size", screen_size(6.5 * Pango::SCALE))
|
74
|
+
end
|
75
|
+
match TitleSlide, Place do |place|
|
76
|
+
place.prop_set("size", screen_size(4 * Pango::SCALE))
|
77
|
+
end
|
78
|
+
#match TitleSlide, "*" do |elems|
|
79
|
+
# elems.horizontal_centering = false
|
80
|
+
#end
|
81
|
+
|
82
|
+
# Cites
|
83
|
+
#match Slide do |slides|
|
84
|
+
# slides.each do |slide|
|
85
|
+
# if slide.match?(/Acknowledgement/)
|
86
|
+
# slide.horizontal_centering = true
|
87
|
+
# end
|
88
|
+
# end
|
89
|
+
#end
|
90
|
+
|
91
|
+
@title_slide_background_image = 'images/matrix_prk_firmware.jpg'
|
92
|
+
include_theme("title-slide-background-image")
|
93
|
+
|
94
|
+
@slide_background_image = 'images/black.png'
|
95
|
+
include_theme("slide-background-image")
|
96
|
+
|
97
|
+
#@slide_logo_image = 'images/mark48.png'
|
98
|
+
#include_theme('slide-logo')
|
99
|
+
|
100
|
+
@item_image_1 = 'images/red_pill_48.png'
|
101
|
+
@item_image_2 = 'images/red_pill_40.png'
|
102
|
+
@item_image_3 = 'images/red_pill_32.png'
|
103
|
+
|
104
|
+
include_theme("default-item-mark")
|
105
|
+
|
106
|
+
add_image_path("rabbit-images")
|
107
|
+
|
108
|
+
slide_body = [Slide, Body]
|
109
|
+
item_list_item = [ItemList, ItemListItem]
|
110
|
+
|
111
|
+
indent = 50
|
112
|
+
|
113
|
+
match(*(slide_body + (item_list_item * 1))) do |items|
|
114
|
+
name = "item1"
|
115
|
+
items.delete_pre_draw_proc_by_name(name)
|
116
|
+
items.delete_post_draw_proc_by_name(name)
|
117
|
+
draw_image_mark(items, @item_image_1, name, indent: indent)
|
118
|
+
end
|
119
|
+
|
120
|
+
match(*(slide_body + (item_list_item * 2))) do |items|
|
121
|
+
name = "item2"
|
122
|
+
items.delete_pre_draw_proc_by_name(name)
|
123
|
+
items.delete_post_draw_proc_by_name(name)
|
124
|
+
draw_image_mark(items, @item_image_2, name, indent: indent)
|
125
|
+
end
|
126
|
+
|
127
|
+
match(*(slide_body + (item_list_item * 3))) do |items|
|
128
|
+
name = "item3"
|
129
|
+
items.delete_pre_draw_proc_by_name(name)
|
130
|
+
items.delete_post_draw_proc_by_name(name)
|
131
|
+
draw_image_mark(items, @item_image_3, name, indent: indent)
|
132
|
+
end
|
133
|
+
|
134
|
+
enum_list_item = [EnumList, EnumListItem]
|
135
|
+
|
136
|
+
match(*(slide_body + enum_list_item + item_list_item)) do |items|
|
137
|
+
name = "enum-item1"
|
138
|
+
items.delete_pre_draw_proc_by_name(name)
|
139
|
+
items.delete_post_draw_proc_by_name(name)
|
140
|
+
draw_image_mark(items, @item_image_1, name, indent: indent)
|
141
|
+
end
|
142
|
+
|
143
|
+
match(*(slide_body + enum_list_item + (item_list_item * 2))) do |items|
|
144
|
+
name = "enum-item2"
|
145
|
+
items.delete_pre_draw_proc_by_name(name)
|
146
|
+
items.delete_post_draw_proc_by_name(name)
|
147
|
+
draw_image_mark(items, @item_image_2, name, indent: indent)
|
148
|
+
end
|
149
|
+
|
150
|
+
|
151
|
+
match(Slide) do |slides|
|
152
|
+
slides.each do |slide|
|
153
|
+
if slide.match? /VCENTER/
|
154
|
+
slide.vertical_centering = true
|
155
|
+
end
|
156
|
+
if slide.match? /HCENTER/
|
157
|
+
slide.horizontal_centering = true
|
158
|
+
slide.vertical_centering = false
|
159
|
+
end
|
160
|
+
if slide.match? /XXLARGE/
|
161
|
+
slide.prop_set "size", @xx_large_font_size
|
162
|
+
elsif slide.match? /XLARGE/
|
163
|
+
slide.prop_set "size", @x_large_font_size
|
164
|
+
end
|
165
|
+
if slide.match? /MONO/
|
166
|
+
slide.prop_set "font-family", @monospace_font_family
|
167
|
+
slide.prop_set "foreground", matrix_green_title_2
|
168
|
+
elsif slide.match? /TITLE/
|
169
|
+
slide.prop_set "font-family", @title_font_family
|
170
|
+
slide.prop_set "foreground", matrix_green_title_2
|
171
|
+
end
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
175
|
+
match(Slide, HeadLine) do |heads|
|
176
|
+
heads.each do |head|
|
177
|
+
if head.match? /(VCENTER|HCENTER|TITLE|HIDE)/
|
178
|
+
head.prop_set "size", 0
|
179
|
+
end
|
180
|
+
end
|
181
|
+
end
|