Automatically linking up citations to suttas on D&D

(this post is split from here)

Bhante @Sujato, it looks like Discourse plugins are written in Ember.js. I’m not familiar with that framework, although it shouldn’t be impossible to learn. It also seems that Ruby is involved there somehow, although that may not matter. @musiko, do you have any experience writing Discourse plugins?

And, Bhante, how would you envision this would work? Would the text of the post remain unchanged and the links would be applied every time the post was rendered?

1 Like

It looks like a plugin for this might already exist. At least one that will get work for most citations:

It allows for regex. Bhante @sujato and @musiko, what do you think? Has this already been tried?

BTW, I’ve fixed some bugs and made citations for chapters in SN work correctly.

3 Likes

This could work, let me test this a bit first.

There are some tricky parts I see:

  • mixed cases (DN1, Dn1, dn1,…)
  • space (DN1, DN 1)
  • punctuations (DN1[.,?!):;], DN1.1,…)
  • ranges (Dhp 274 - > https://suttacentral.net/dhp273-289/en/sujato#vns274)
  • replacing existing direct links in posts with short notation (out of scope for this theme component)

I think I already have some regex rules that cover the majority of cases, but I expect most exceptions will come from Khuddhaka and Vinaya.

We’ll definitely have to test this thoroughly before implementing it in production.

1 Like

In my app I have just made the citations case insensitive.

I have made the space optional. And it’s an ascii space character, not a \s whitespace.

DN and MN should not be looking for a second number. It’s not possible (I think) to create links that include section numbers just using regex.

The only acceptable separators should be . and :

Ranges will just have to be ignored. They are not well supported anyway.

Yes, that’s the real tricky bit. The plugin seems to already be able to ignore any text set inside of back ticks. I wonder if it could ignore any text inside of brackets or html links.

I wouldn’t even dream of trying to do the Vinaya. The SC Vinaya notation is a bit cumbersome so I doubt many people would be using those anyway. Besides, I rarely see people putting any Vinaya citations into posts.

As far as the KN, the citations will simply have to be exactly in line with what SuttaCentral is expecting to see. So things like Iti 2.4 just won’t be able to work (unless there is some regex wizardry that could transform it into Iti31.

Also, I’m not sure if there is a regex way to change upper case to lower case. So urls might have to have mixed case in them.

Thanks for looking into this!

1 Like

yes

agreed


we did something like this long ago, but it fell by the wayside.

2 Likes

Bhante @sujato, can you verify that the list of canonical URIs under https.//suttacentral.net/ is up to date (see below). I’ve picked this list from the Github repo a while ago, so there might be some recent changes (I have 4211 IDs)?

If I understand correctly, the canonical URIs point to actual files in the repo, while there is a special logic to translate say /dhp27 or /an1.7 to a dynamically filtered view, based on /dhp21-32 and /an1.1-10 respectively, so where this logic exists we would want to link directly to /dhp27 and /an1.7 rather than the canonical URIs? Or we can do both :wink:.

dn1
dn2
dn3
dn4
dn5
dn6
dn7
dn8
dn9
dn10
dn11
dn12
dn13
dn14
dn15
dn16
dn17
dn18
dn19
dn20
dn21
dn22
dn23
dn24
dn25
dn26
dn27
dn28
dn29
dn30
dn31
dn32
dn33
dn34
mn1
mn2
mn3
mn4
mn5
mn6
mn7
mn8
mn9
mn10
mn11
mn12
mn13
mn14
mn15
mn16
mn17
mn18
mn19
mn20
mn21
mn22
mn23
mn24
mn25
mn26
mn27
mn28
mn29
mn30
mn31
mn32
mn33
mn34
mn35
mn36
mn37
mn38
mn39
mn40
mn41
mn42
mn43
mn44
mn45
mn46
mn47
mn48
mn49
mn50
mn51
mn52
mn53
mn54
mn55
mn56
mn57
mn58
mn59
mn60
mn61
mn62
mn63
mn64
mn65
mn66
mn67
mn68
mn69
mn70
mn71
mn72
mn73
mn74
mn75
mn76
mn77
mn78
mn79
mn80
mn81
mn82
mn83
mn84
mn85
mn86
mn87
mn88
mn89
mn90
mn91
mn92
mn93
mn94
mn95
mn96
mn97
mn98
mn99
mn100
mn101
mn102
mn103
mn104
mn105
mn106
mn107
mn108
mn109
mn110
mn111
mn112
mn113
mn114
mn115
mn116
mn117
mn118
mn119
mn120
mn121
mn122
mn123
mn124
mn125
mn126
mn127
mn128
mn129
mn130
mn131
mn132
mn133
mn134
mn135
mn136
mn137
mn138
mn139
mn140
mn141
mn142
mn143
mn144
mn145
mn146
mn147
mn148
mn149
mn150
mn151
mn152
an1
an2
an3
an4
an5
an6
an7
an8
an9
an10
an11
an1.1-10
an1.11-20
an1.21-30
an1.31-40
an1.41-50
an1.51-60
an1.61-70
an1.71-81
an1.82-97
an1.98-139
an1.140-149
an1.150-169
an1.170-187
an1.188-197
an1.198-208
an1.209-218
an1.219-234
an1.235-247
an1.248-257
an1.258-267
an1.268-277
an1.278-286
an1.287-295
an1.296-305
an1.306-315
an1.316-332
an1.333-377
an1.378-393
an1.394-574
an1.575-615
an1.616-627
an2.1-10
an2.11-20
an2.21-31
an2.32-41
an2.42-51
an2.52-63
an2.64-76
an2.77-86
an2.87-97
an2.98-117
an2.118-129
an2.130-140
an2.141-150
an2.151-162
an2.163-179
an2.180-229
an2.230-279
an2.280-309
an2.310-479
an3.1
an3.2
an3.3
an3.4
an3.5
an3.6
an3.7
an3.8
an3.9
an3.10
an3.11
an3.12
an3.13
an3.14
an3.15
an3.16
an3.17
an3.18
an3.19
an3.20
an3.21
an3.22
an3.23
an3.24
an3.25
an3.26
an3.27
an3.28
an3.29
an3.30
an3.31
an3.32
an3.33
an3.34
an3.35
an3.36
an3.37
an3.38
an3.39
an3.40
an3.41
an3.42
an3.43
an3.44
an3.45
an3.46
an3.47
an3.48
an3.49
an3.50
an3.51
an3.52
an3.53
an3.54
an3.55
an3.56
an3.57
an3.58
an3.59
an3.60
an3.61
an3.62
an3.63
an3.64
an3.65
an3.66
an3.67
an3.68
an3.69
an3.70
an3.71
an3.72
an3.73
an3.74
an3.75
an3.76
an3.77
an3.78
an3.79
an3.80
an3.81
an3.82
an3.83
an3.84
an3.85
an3.86
an3.87
an3.88
an3.89
an3.90
an3.91
an3.92
an3.93
an3.94
an3.95
an3.96
an3.97
an3.98
an3.99
an3.100
an3.101
an3.102
an3.103
an3.104
an3.105
an3.106
an3.107
an3.108
an3.109
an3.110
an3.111
an3.112
an3.113
an3.114
an3.115
an3.116
an3.117
an3.118
an3.119
an3.120
an3.121
an3.122
an3.123
an3.124
an3.125
an3.126
an3.127
an3.128
an3.129
an3.130
an3.131
an3.132
an3.133
an3.134
an3.135
an3.136
an3.137
an3.138
an3.139
an3.140
an3.141
an3.142
an3.143
an3.144
an3.145
an3.146
an3.147
an3.148
an3.149
an3.150
an3.151
an3.152
an3.153
an3.154
an3.155
an3.156-162
an3.163-182
an3.183-352
an4.1
an4.2
an4.3
an4.4
an4.5
an4.6
an4.7
an4.8
an4.9
an4.10
an4.11
an4.12
an4.13
an4.14
an4.15
an4.16
an4.17
an4.18
an4.19
an4.20
an4.21
an4.22
an4.23
an4.24
an4.25
an4.26
an4.27
an4.28
an4.29
an4.30
an4.31
an4.32
an4.33
an4.34
an4.35
an4.36
an4.37
an4.38
an4.39
an4.40
an4.41
an4.42
an4.43
an4.44
an4.45
an4.46
an4.47
an4.48
an4.49
an4.50
an4.51
an4.52
an4.53
an4.54
an4.55
an4.56
an4.57
an4.58
an4.59
an4.60
an4.61
an4.62
an4.63
an4.64
an4.65
an4.66
an4.67
an4.68
an4.69
an4.70
an4.71
an4.72
an4.73
an4.74
an4.75
an4.76
an4.77
an4.78
an4.79
an4.80
an4.81
an4.82
an4.83
an4.84
an4.85
an4.86
an4.87
an4.88
an4.89
an4.90
an4.91
an4.92
an4.93
an4.94
an4.95
an4.96
an4.97
an4.98
an4.99
an4.100
an4.101
an4.102
an4.103
an4.104
an4.105
an4.107
an4.108
an4.109
an4.110
an4.111
an4.112
an4.113
an4.114
an4.115
an4.116
an4.117
an4.118
an4.119
an4.120
an4.121
an4.122
an4.123
an4.124
an4.125
an4.126
an4.127
an4.128
an4.129
an4.130
an4.131
an4.132
an4.133
an4.134
an4.135
an4.136
an4.137
an4.138
an4.139
an4.140
an4.141
an4.142
an4.143
an4.144
an4.145
an4.146
an4.147
an4.148
an4.149
an4.150
an4.151
an4.152
an4.153
an4.154
an4.155
an4.156
an4.157
an4.158
an4.159
an4.160
an4.161
an4.162
an4.163
an4.164
an4.165
an4.166
an4.167
an4.168
an4.169
an4.170
an4.171
an4.172
an4.173
an4.174
an4.175
an4.176
an4.177
an4.178
an4.179
an4.180
an4.181
an4.182
an4.183
an4.184
an4.185
an4.186
an4.187
an4.188
an4.189
an4.190
an4.191
an4.192
an4.193
an4.194
an4.195
an4.196
an4.197
an4.198
an4.199
an4.200
an4.201
an4.202
an4.203
an4.204
an4.205
an4.206
an4.207
an4.208
an4.209
an4.210
an4.211
an4.212
an4.213
an4.214
an4.215
an4.216
an4.217
an4.218
an4.219
an4.220
an4.221
an4.222
an4.223
an4.224
an4.225
an4.226
an4.227
an4.228
an4.229
an4.230
an4.231
an4.232
an4.233
an4.234
an4.235
an4.236
an4.237
an4.238
an4.239
an4.240
an4.241
an4.242
an4.243
an4.244
an4.245
an4.246
an4.247
an4.248
an4.249
an4.250
an4.251
an4.252
an4.253
an4.254
an4.255
an4.256
an4.257
an4.258
an4.259
an4.260
an4.261
an4.262
an4.263
an4.264
an4.265
an4.266
an4.267
an4.268
an4.269
an4.270
an4.271
an4.272
an4.273
an4.274
an4.275
an4.276
an4.277-303
an4.304
an5.1
an5.2
an5.3
an5.4
an5.5
an5.6
an5.7
an5.8
an5.9
an5.10
an5.11
an5.12
an5.13
an5.14
an5.15
an5.16
an5.17
an5.18
an5.19
an5.20
an5.21
an5.22
an5.23
an5.24
an5.25
an5.26
an5.27
an5.28
an5.29
an5.30
an5.31
an5.32
an5.33
an5.34
an5.35
an5.36
an5.37
an5.38
an5.39
an5.40
an5.41
an5.42
an5.43
an5.44
an5.45
an5.46
an5.47
an5.48
an5.49
an5.50
an5.51
an5.52
an5.53
an5.54
an5.55
an5.56
an5.57
an5.58
an5.59
an5.60
an5.61
an5.62
an5.63
an5.64
an5.65
an5.66
an5.67
an5.68
an5.69
an5.70
an5.71
an5.72
an5.73
an5.74
an5.75
an5.76
an5.77
an5.78
an5.79
an5.80
an5.81
an5.82
an5.83
an5.84
an5.85
an5.86
an5.87
an5.88
an5.89
an5.90
an5.91
an5.92
an5.93
an5.94
an5.95
an5.96
an5.97
an5.98
an5.99
an5.100
an5.101
an5.102
an5.103
an5.104
an5.105
an5.106
an5.107
an5.108
an5.109
an5.110
an5.111
an5.112
an5.113
an5.114
an5.115
an5.116
an5.117
an5.118
an5.119
an5.120
an5.121
an5.122
an5.123
an5.124
an5.125
an5.126
an5.127
an5.128
an5.129
an5.130
an5.131
an5.132
an5.133
an5.134
an5.135
an5.136
an5.137
an5.138
an5.139
an5.140
an5.141
an5.142
an5.143
an5.144
an5.145
an5.146
an5.147
an5.148
an5.149
an5.150
an5.151
an5.152
an5.153
an5.154
an5.155
an5.156
an5.157
an5.158
an5.159
an5.160
an5.161
an5.162
an5.163
an5.164
an5.165
an5.166
an5.167
an5.168
an5.169
an5.170
an5.171
an5.172
an5.173
an5.174
an5.175
an5.176
an5.177
an5.178
an5.179
an5.180
an5.181
an5.182
an5.183
an5.184
an5.185
an5.186
an5.187
an5.188
an5.189
an5.190
an5.191
an5.192
an5.193
an5.194
an5.195
an5.196
an5.197
an5.198
an5.199
an5.200
an5.201
an5.202
an5.203
an5.204
an5.205
an5.206
an5.207
an5.208
an5.209
an5.210
an5.211
an5.212
an5.213
an5.214
an5.215
an5.216
an5.217
an5.218
an5.219
an5.220
an5.221
an5.222
an5.223
an5.224
an5.225
an5.226
an5.227
an5.228
an5.229
an5.230
an5.231
an5.232
an5.233
an5.234
an5.235
an5.236
an5.237
an5.238
an5.239
an5.240
an5.241
an5.242
an5.243
an5.244
an5.245
an5.246
an5.247
an5.248
an5.249
an5.250
an5.251
an5.252
an5.253
an5.254
an5.255
an5.256
an5.257-263
an5.264
an5.265-271
an5.272
an5.273-285
an5.286
an5.287-292
an5.293
an5.294-302
an5.303
an5.304
an5.305
an5.306
an5.307
an5.308-1152
an6.1
an6.2
an6.3
an6.4
an6.5
an6.6
an6.7
an6.8
an6.9
an6.10
an6.11
an6.12
an6.13
an6.14
an6.15
an6.16
an6.17
an6.18
an6.19
an6.20
an6.21
an6.22
an6.23
an6.24
an6.25
an6.26
an6.27
an6.28
an6.29
an6.30
an6.31
an6.32
an6.33
an6.34
an6.35
an6.36
an6.37
an6.38
an6.39
an6.40
an6.41
an6.42
an6.43
an6.44
an6.45
an6.46
an6.47
an6.48
an6.49
an6.50
an6.51
an6.52
an6.53
an6.54
an6.55
an6.56
an6.57
an6.58
an6.59
an6.60
an6.61
an6.62
an6.63
an6.64
an6.65
an6.66
an6.67
an6.68
an6.69
an6.70
an6.71
an6.72
an6.73
an6.74
an6.75
an6.76
an6.77
an6.78
an6.79
an6.80
an6.81
an6.82
an6.83
an6.84
an6.85
an6.86
an6.87
an6.88
an6.89
an6.90
an6.91
an6.92
an6.93
an6.94
an6.95
an6.96
an6.97
an6.98
an6.99
an6.100
an6.101
an6.102
an6.103
an6.104
an6.105
an6.106
an6.107
an6.108
an6.109
an6.110
an6.111
an6.112
an6.113
an6.114
an6.115
an6.116
an6.117
an6.118
an6.119
an6.120-139
an6.140
an6.141
an6.142
an6.143-169
an6.170
an7.1
an7.2
an7.3
an7.4
an7.5
an7.6
an7.7
an7.8
an7.9
an7.10
an7.11
an7.12
an7.13
an7.14
an7.15
an7.16
an7.17
an7.18
an7.19
an7.20
an7.21
an7.22
an7.23
an7.24
an7.25
an7.26
an7.27
an7.28
an7.29
an7.30
an7.31
an7.32
an7.33
an7.34
an7.35
an7.36
an7.37
an7.38
an7.39
an7.40
an7.41
an7.42
an7.43
an7.44
an7.45
an7.46
an7.47
an7.48
an7.49
an7.50
an7.51
an7.52
an7.53
an7.54
an7.55
an7.56
an7.57
an7.58
an7.59
an7.60
an7.61
an7.62
an7.63
an7.64
an7.65
an7.66
an7.67
an7.68
an7.69
an7.70
an7.71
an7.72
an7.73
an7.74
an7.75
an7.76
an7.77
an7.78
an7.79
an7.80
an7.81
an7.82
an7.83
an7.84
an7.85
an7.86
an7.87
an7.88
an7.89
an7.90
an7.91
an7.92
an7.93
an7.94
an7.95
an7.96-614
an7.615
an7.616
an7.617
an7.618
an7.645
an8.1
an8.2
an8.3
an8.4
an8.5
an8.6
an8.7
an8.8
an8.9
an8.10
an8.11
an8.12
an8.13
an8.14
an8.15
an8.16
an8.17
an8.18
an8.19
an8.20
an8.21
an8.22
an8.23
an8.24
an8.25
an8.26
an8.27
an8.28
an8.29
an8.30
an8.31
an8.32
an8.33
an8.34
an8.35
an8.36
an8.37
an8.38
an8.39
an8.40
an8.41
an8.42
an8.43
an8.44
an8.45
an8.46
an8.47
an8.48
an8.49
an8.50
an8.51
an8.52
an8.53
an8.54
an8.55
an8.56
an8.57
an8.58
an8.59
an8.60
an8.61
an8.62
an8.63
an8.64
an8.65
an8.66
an8.67
an8.68
an8.69
an8.70
an8.71
an8.72
an8.73
an8.74
an8.75
an8.76
an8.77
an8.78
an8.79
an8.80
an8.81
an8.82
an8.83
an8.84
an8.85
an8.86
an8.87
an8.88
an8.89
an8.90
an8.91-117
an8.118
an8.119
an8.120
an8.121-147
an8.148
an9.1
an9.2
an9.3
an9.4
an9.5
an9.6
an9.7
an9.8
an9.9
an9.10
an9.11
an9.12
an9.13
an9.14
an9.15
an9.16
an9.17
an9.18
an9.19
an9.20
an9.21
an9.22
an9.23
an9.24
an9.25
an9.26
an9.27
an9.28
an9.29
an9.30
an9.31
an9.32
an9.33
an9.34
an9.35
an9.36
an9.37
an9.38
an9.39
an9.40
an9.41
an9.42
an9.43
an9.44
an9.45
an9.46
an9.47
an9.48
an9.49
an9.50
an9.51
an9.52
an9.53
an9.54
an9.55
an9.56
an9.57
an9.58
an9.59
an9.60
an9.61
an9.62
an9.63
an9.64
an9.65
an9.66
an9.67
an9.68
an9.69
an9.70
an9.71
an9.72
an9.73
an9.74-81
an9.82
an9.83
an9.84-91
an9.92
an9.93
an9.94
an9.95-112
an9.113
an10.1
an10.2
an10.3
an10.4
an10.5
an10.6
an10.7
an10.8
an10.9
an10.10
an10.11
an10.12
an10.13
an10.14
an10.15
an10.16
an10.17
an10.18
an10.19
an10.20
an10.21
an10.22
an10.23
an10.24
an10.25
an10.26
an10.27
an10.28
an10.29
an10.30
an10.31
an10.32
an10.33
an10.34
an10.35
an10.36
an10.37
an10.38
an10.39
an10.40
an10.41
an10.42
an10.43
an10.44
an10.45
an10.46
an10.47
an10.48
an10.49
an10.50
an10.51
an10.52
an10.53
an10.54
an10.55
an10.56
an10.57
an10.58
an10.59
an10.60
an10.61
an10.62
an10.63
an10.64
an10.65
an10.66
an10.67
an10.68
an10.69
an10.70
an10.71
an10.72
an10.73
an10.74
an10.75
an10.76
an10.77
an10.78
an10.79
an10.80
an10.81
an10.82
an10.83
an10.84
an10.85
an10.86
an10.87
an10.88
an10.89
an10.90
an10.91
an10.92
an10.93
an10.94
an10.95
an10.96
an10.97
an10.98
an10.99
an10.100
an10.101
an10.102
an10.103
an10.104
an10.105
an10.106
an10.107
an10.108
an10.109
an10.110
an10.111
an10.112
an10.113
an10.114
an10.115
an10.116
an10.117
an10.118
an10.119
an10.120
an10.121
an10.122
an10.123
an10.124
an10.125
an10.126
an10.127
an10.128
an10.129
an10.130
an10.131
an10.132
an10.133
an10.134
an10.135
an10.136
an10.137
an10.138
an10.139
an10.140
an10.141
an10.142
an10.143
an10.144
an10.145
an10.146
an10.147
an10.148
an10.149
an10.150
an10.151
an10.152
an10.153
an10.154
an10.155
an10.156-166
an10.167
an10.168
an10.169
an10.170
an10.171
an10.172
an10.173
an10.174
an10.175
an10.176
an10.177
an10.178
an10.179
an10.180
an10.181
an10.182
an10.183
an10.184
an10.185
an10.186
an10.187
an10.188
an10.189
an10.190
an10.191
an10.192
an10.193
an10.194
an10.195
an10.196
an10.197
an10.198
an10.199-210
an10.211
an10.212
an10.213
an10.214
an10.215
an10.216
an10.217
an10.218
an10.219
an10.220
an10.221
an10.222
an10.223
an10.224
an10.225-228
an10.229
an10.233
an10.237
an10.238
an10.239
an10.240
an10.267
an11.1
an11.2
an11.3
an11.4
an11.5
an11.6
an11.7
an11.8
an11.9
an11.10
an11.11
an11.12
an11.13
an11.14
an11.15
an11.16
an11.17
an11.18
an11.19
an11.20
an11.21
an11.22-29
an11.30-69
an11.70-117
an11.118-165
an11.166-213
an11.214-261
an11.262-309
an11.310-357
an11.358-405
an11.406-453
an11.454-501
an11.502-981
an11.982
an11.983-991
an11.992-1151
sn1
sn2
sn3
sn4
sn5
sn6
sn7
sn8
sn9
sn10
sn11
sn12
sn13
sn14
sn15
sn16
sn17
sn18
sn19
sn20
sn21
sn22
sn23
sn24
sn25
sn26
sn27
sn28
sn29
sn30
sn31
sn32
sn33
sn34
sn35
sn36
sn37
sn38
sn39
sn40
sn41
sn42
sn43
sn44
sn45
sn46
sn47
sn48
sn49
sn50
sn51
sn52
sn53
sn54
sn55
sn56
sn1.1
sn1.2
sn1.3
sn1.4
sn1.5
sn1.6
sn1.7
sn1.8
sn1.9
sn1.10
sn1.11
sn1.12
sn1.13
sn1.14
sn1.15
sn1.16
sn1.17
sn1.18
sn1.19
sn1.20
sn1.21
sn1.22
sn1.23
sn1.24
sn1.25
sn1.26
sn1.27
sn1.28
sn1.29
sn1.30
sn1.31
sn1.32
sn1.33
sn1.34
sn1.35
sn1.36
sn1.37
sn1.38
sn1.39
sn1.40
sn1.41
sn1.42
sn1.43
sn1.44
sn1.45
sn1.46
sn1.47
sn1.48
sn1.49
sn1.50
sn1.51
sn1.52
sn1.53
sn1.54
sn1.55
sn1.56
sn1.57
sn1.58
sn1.59
sn1.60
sn1.61
sn1.62
sn1.63
sn1.64
sn1.65
sn1.66
sn1.67
sn1.68
sn1.69
sn1.70
sn1.71
sn1.72
sn1.73
sn1.74
sn1.75
sn1.76
sn1.77
sn1.78
sn1.79
sn1.80
sn1.81
sn2.1
sn2.2
sn2.3
sn2.4
sn2.5
sn2.6
sn2.7
sn2.8
sn2.9
sn2.10
sn2.11
sn2.12
sn2.13
sn2.14
sn2.15
sn2.16
sn2.17
sn2.18
sn2.19
sn2.20
sn2.21
sn2.22
sn2.23
sn2.24
sn2.25
sn2.26
sn2.27
sn2.28
sn2.29
sn2.30
sn3.1
sn3.2
sn3.3
sn3.4
sn3.5
sn3.6
sn3.7
sn3.8
sn3.9
sn3.10
sn3.11
sn3.12
sn3.13
sn3.14
sn3.15
sn3.16
sn3.17
sn3.18
sn3.19
sn3.20
sn3.21
sn3.22
sn3.23
sn3.24
sn3.25
sn4.1
sn4.2
sn4.3
sn4.4
sn4.5
sn4.6
sn4.7
sn4.8
sn4.9
sn4.10
sn4.11
sn4.12
sn4.13
sn4.14
sn4.15
sn4.16
sn4.17
sn4.18
sn4.19
sn4.20
sn4.21
sn4.22
sn4.23
sn4.24
sn4.25
sn5.1
sn5.2
sn5.3
sn5.4
sn5.5
sn5.6
sn5.7
sn5.8
sn5.9
sn5.10
sn6.1
sn6.2
sn6.3
sn6.4
sn6.5
sn6.6
sn6.7
sn6.8
sn6.9
sn6.10
sn6.11
sn6.12
sn6.13
sn6.14
sn6.15
sn7.1
sn7.2
sn7.3
sn7.4
sn7.5
sn7.6
sn7.7
sn7.8
sn7.9
sn7.10
sn7.11
sn7.12
sn7.13
sn7.14
sn7.15
sn7.16
sn7.17
sn7.18
sn7.19
sn7.20
sn7.21
sn7.22
sn8.1
sn8.2
sn8.3
sn8.4
sn8.5
sn8.6
sn8.7
sn8.8
sn8.9
sn8.10
sn8.11
sn8.12
sn9.1
sn9.2
sn9.3
sn9.4
sn9.5
sn9.6
sn9.7
sn9.8
sn9.9
sn9.10
sn9.11
sn9.12
sn9.13
sn9.14
sn10.1
sn10.2
sn10.3
sn10.4
sn10.5
sn10.6
sn10.7
sn10.8
sn10.9
sn10.10
sn10.11
sn10.12
sn11.1
sn11.2
sn11.3
sn11.4
sn11.5
sn11.6
sn11.7
sn11.8
sn11.9
sn11.10
sn11.11
sn11.12
sn11.13
sn11.14
sn11.15
sn11.16
sn11.17
sn11.18
sn11.19
sn11.20
sn11.21
sn11.22
sn11.23
sn11.24
sn11.25
sn12.1
sn12.2
sn12.3
sn12.4
sn12.5
sn12.6
sn12.7
sn12.8
sn12.9
sn12.10
sn12.11
sn12.12
sn12.13
sn12.14
sn12.15
sn12.16
sn12.17
sn12.18
sn12.19
sn12.20
sn12.21
sn12.22
sn12.23
sn12.24
sn12.25
sn12.26
sn12.27
sn12.28
sn12.29
sn12.30
sn12.31
sn12.32
sn12.33
sn12.34
sn12.35
sn12.36
sn12.37
sn12.38
sn12.39
sn12.40
sn12.41
sn12.42
sn12.43
sn12.44
sn12.45
sn12.46
sn12.47
sn12.48
sn12.49
sn12.50
sn12.51
sn12.52
sn12.53
sn12.54
sn12.55
sn12.56
sn12.57
sn12.58
sn12.59
sn12.60
sn12.61
sn12.62
sn12.63
sn12.64
sn12.65
sn12.66
sn12.67
sn12.68
sn12.69
sn12.70
sn12.71
sn12.72-81
sn12.82
sn12.83-92
sn12.93
sn13.1
sn13.2
sn13.3
sn13.4
sn13.5
sn13.6
sn13.7
sn13.8
sn13.9
sn13.10
sn13.11
sn14.1
sn14.2
sn14.3
sn14.4
sn14.5
sn14.6
sn14.7
sn14.8
sn14.9
sn14.10
sn14.11
sn14.12
sn14.13
sn14.14
sn14.15
sn14.16
sn14.17
sn14.18
sn14.19
sn14.20
sn14.21
sn14.22
sn14.23
sn14.24
sn14.25
sn14.26
sn14.27
sn14.28
sn14.29
sn14.30
sn14.31
sn14.32
sn14.33
sn14.34
sn14.35
sn14.36
sn14.37
sn14.38
sn14.39
sn15.1
sn15.2
sn15.3
sn15.4
sn15.5
sn15.6
sn15.7
sn15.8
sn15.9
sn15.10
sn15.11
sn15.12
sn15.13
sn15.14
sn15.15
sn15.16
sn15.17
sn15.18
sn15.19
sn15.20
sn16.1
sn16.2
sn16.3
sn16.4
sn16.5
sn16.6
sn16.7
sn16.8
sn16.9
sn16.10
sn16.11
sn16.12
sn16.13
sn17.1
sn17.2
sn17.3
sn17.4
sn17.5
sn17.6
sn17.7
sn17.8
sn17.9
sn17.10
sn17.11
sn17.12
sn17.13-20
sn17.21
sn17.22
sn17.23
sn17.24
sn17.25
sn17.26
sn17.27
sn17.28
sn17.29
sn17.30
sn17.31
sn17.32
sn17.33
sn17.34
sn17.35
sn17.36
sn17.37
sn17.38-43
sn18.1
sn18.2
sn18.3
sn18.4
sn18.5
sn18.6
sn18.7
sn18.8
sn18.9
sn18.10
sn18.11
sn18.12-20
sn18.21
sn18.22
sn19.1
sn19.2
sn19.3
sn19.4
sn19.5
sn19.6
sn19.7
sn19.8
sn19.9
sn19.10
sn19.11
sn19.12
sn19.13
sn19.14
sn19.15
sn19.16
sn19.17
sn19.18
sn19.19
sn19.20
sn19.21
sn20.1
sn20.2
sn20.3
sn20.4
sn20.5
sn20.6
sn20.7
sn20.8
sn20.9
sn20.10
sn20.11
sn20.12
sn21.1
sn21.2
sn21.3
sn21.4
sn21.5
sn21.6
sn21.7
sn21.8
sn21.9
sn21.10
sn21.11
sn21.12
sn22.1
sn22.2
sn22.3
sn22.4
sn22.5
sn22.6
sn22.7
sn22.8
sn22.9
sn22.10
sn22.11
sn22.12
sn22.13
sn22.14
sn22.15
sn22.16
sn22.17
sn22.18
sn22.19
sn22.20
sn22.21
sn22.22
sn22.23
sn22.24
sn22.25
sn22.26
sn22.27
sn22.28
sn22.29
sn22.30
sn22.31
sn22.32
sn22.33
sn22.34
sn22.35
sn22.36
sn22.37
sn22.38
sn22.39
sn22.40
sn22.41
sn22.42
sn22.43
sn22.44
sn22.45
sn22.46
sn22.47
sn22.48
sn22.49
sn22.50
sn22.51
sn22.52
sn22.53
sn22.54
sn22.55
sn22.56
sn22.57
sn22.58
sn22.59
sn22.60
sn22.61
sn22.62
sn22.63
sn22.64
sn22.65
sn22.66
sn22.67
sn22.68
sn22.69
sn22.70
sn22.71
sn22.72
sn22.73
sn22.74
sn22.75
sn22.76
sn22.77
sn22.78
sn22.79
sn22.80
sn22.81
sn22.82
sn22.83
sn22.84
sn22.85
sn22.86
sn22.87
sn22.88
sn22.89
sn22.90
sn22.91
sn22.92
sn22.93
sn22.94
sn22.95
sn22.96
sn22.97
sn22.98
sn22.99
sn22.100
sn22.101
sn22.102
sn22.103
sn22.104
sn22.105
sn22.106
sn22.107
sn22.108
sn22.109
sn22.110
sn22.111
sn22.112
sn22.113
sn22.114
sn22.115
sn22.116
sn22.117
sn22.118
sn22.119
sn22.120
sn22.121
sn22.122
sn22.123
sn22.124
sn22.125
sn22.126
sn22.127
sn22.128
sn22.129
sn22.130
sn22.131
sn22.132
sn22.133
sn22.134
sn22.135
sn22.136
sn22.137
sn22.138
sn22.139
sn22.140
sn22.141
sn22.142
sn22.143
sn22.144
sn22.145
sn22.146
sn22.147
sn22.148
sn22.149
sn22.150
sn22.151
sn22.152
sn22.153
sn22.154
sn22.155
sn22.156
sn22.157
sn22.158
sn22.159
sn23.1
sn23.2
sn23.3
sn23.4
sn23.5
sn23.6
sn23.7
sn23.8
sn23.9
sn23.10
sn23.11
sn23.12
sn23.13
sn23.14
sn23.15
sn23.16
sn23.17
sn23.18
sn23.19
sn23.20
sn23.21
sn23.22
sn23.23-33
sn23.34
sn23.35-45
sn23.46
sn24.1
sn24.2
sn24.3
sn24.4
sn24.5
sn24.6
sn24.7
sn24.8
sn24.9
sn24.10
sn24.11
sn24.12
sn24.13
sn24.14
sn24.15
sn24.16
sn24.17
sn24.18
sn24.19
sn24.20-35
sn24.36
sn24.37
sn24.38
sn24.39
sn24.40
sn24.41
sn24.42
sn24.43
sn24.44
sn24.45
sn24.46-69
sn24.70
sn24.71
sn24.72-95
sn24.96
sn25.1
sn25.2
sn25.3
sn25.4
sn25.5
sn25.6
sn25.7
sn25.8
sn25.9
sn25.10
sn26.1
sn26.2
sn26.3
sn26.4
sn26.5
sn26.6
sn26.7
sn26.8
sn26.9
sn26.10
sn27.1
sn27.2
sn27.3
sn27.4
sn27.5
sn27.6
sn27.7
sn27.8
sn27.9
sn27.10
sn28.1
sn28.2
sn28.3
sn28.4
sn28.5
sn28.6
sn28.7
sn28.8
sn28.9
sn28.10
sn29.1
sn29.2
sn29.3
sn29.4
sn29.5
sn29.6
sn29.7
sn29.8
sn29.9
sn29.10
sn29.11-20
sn29.21-50
sn30.01
sn30.02
sn30.03
sn30.04-6
sn30.07-16
sn30.17-46
sn31.1
sn31.2
sn31.3
sn31.4-12
sn31.13-22
sn31.23-112
sn32.1
sn32.2
sn32.3-12
sn32.13-52
sn32.53
sn32.54
sn32.55
sn32.56
sn32.57
sn33.1
sn33.2
sn33.3
sn33.4
sn33.5
sn33.6-10
sn33.11-15
sn33.16-20
sn33.21-25
sn33.26-30
sn33.31-35
sn33.36-40
sn33.41-45
sn33.46-50
sn33.51-54
sn33.55
sn34.1
sn34.2
sn34.3
sn34.4
sn34.5
sn34.6
sn34.7
sn34.8
sn34.9
sn34.10
sn34.11
sn34.12
sn34.13
sn34.14
sn34.15
sn34.16
sn34.17
sn34.18
sn34.19
sn34.20-27
sn34.28-34
sn34.35-40
sn34.41-45
sn34.46-49
sn34.50-52
sn34.53-54
sn34.55
sn35.1
sn35.2
sn35.3
sn35.4
sn35.5
sn35.6
sn35.7
sn35.8
sn35.9
sn35.10
sn35.11
sn35.12
sn35.13
sn35.14
sn35.15
sn35.16
sn35.17
sn35.18
sn35.19
sn35.20
sn35.21
sn35.22
sn35.23
sn35.24
sn35.25
sn35.26
sn35.27
sn35.28
sn35.29
sn35.30
sn35.31
sn35.32
sn35.33-42
sn35.43-51
sn35.52
sn35.53
sn35.54
sn35.55
sn35.56
sn35.57
sn35.58
sn35.59
sn35.60
sn35.61
sn35.62
sn35.63
sn35.64
sn35.65
sn35.66
sn35.67
sn35.68
sn35.69
sn35.70
sn35.71
sn35.72
sn35.73
sn35.74
sn35.75
sn35.76
sn35.77
sn35.78
sn35.79
sn35.80
sn35.81
sn35.82
sn35.83
sn35.84
sn35.85
sn35.86
sn35.87
sn35.88
sn35.89
sn35.90
sn35.91
sn35.92
sn35.93
sn35.94
sn35.95
sn35.96
sn35.97
sn35.98
sn35.99
sn35.100
sn35.101
sn35.102
sn35.103
sn35.104
sn35.105
sn35.106
sn35.107
sn35.108
sn35.109
sn35.110
sn35.111
sn35.112
sn35.113
sn35.114
sn35.115
sn35.116
sn35.117
sn35.118
sn35.119
sn35.120
sn35.121
sn35.122
sn35.123
sn35.124
sn35.125
sn35.126
sn35.127
sn35.128
sn35.129
sn35.130
sn35.131
sn35.132
sn35.133
sn35.134
sn35.135
sn35.136
sn35.137
sn35.138
sn35.139
sn35.140
sn35.141
sn35.142
sn35.143
sn35.144
sn35.145
sn35.146
sn35.147
sn35.148
sn35.149
sn35.150
sn35.151
sn35.152
sn35.153
sn35.154
sn35.155
sn35.156
sn35.157
sn35.158
sn35.159
sn35.160
sn35.161
sn35.162
sn35.163
sn35.164
sn35.165
sn35.166
sn35.167
sn35.168
sn35.169
sn35.170
sn35.171-173
sn35.174-176
sn35.177-179
sn35.180-182
sn35.183-185
sn35.186
sn35.187
sn35.188
sn35.189-191
sn35.192-194
sn35.195-197
sn35.198-200
sn35.201-203
sn35.204
sn35.205
sn35.206
sn35.207-209
sn35.210-212
sn35.213-215
sn35.216-218
sn35.219-221
sn35.222
sn35.223
sn35.224
sn35.225
sn35.226
sn35.227
sn35.228
sn35.229
sn35.230
sn35.231
sn35.232
sn35.233
sn35.234
sn35.235
sn35.236
sn35.237
sn35.238
sn35.239
sn35.240
sn35.241
sn35.242
sn35.243
sn35.244
sn35.245
sn35.246
sn35.247
sn35.248
sn36.1
sn36.2
sn36.3
sn36.4
sn36.5
sn36.6
sn36.7
sn36.8
sn36.9
sn36.10
sn36.11
sn36.12
sn36.13
sn36.14
sn36.15
sn36.16
sn36.17
sn36.18
sn36.19
sn36.20
sn36.21
sn36.22
sn36.23
sn36.24
sn36.25
sn36.26
sn36.27
sn36.28
sn36.29
sn36.30
sn36.31
sn37.1
sn37.2
sn37.3
sn37.4
sn37.5
sn37.6
sn37.7
sn37.8
sn37.9
sn37.10
sn37.11
sn37.12
sn37.13
sn37.14
sn37.15
sn37.16
sn37.17
sn37.18
sn37.19
sn37.20
sn37.21
sn37.22
sn37.23
sn37.24
sn37.25
sn37.26
sn37.27
sn37.28
sn37.29
sn37.30
sn37.31
sn37.32
sn37.33
sn37.34
sn38.1
sn38.2
sn38.3
sn38.4
sn38.5
sn38.6
sn38.7
sn38.8
sn38.9
sn38.10
sn38.11
sn38.12
sn38.13
sn38.14
sn38.15
sn38.16
sn39.1-15
sn39.16
sn40.1
sn40.2
sn40.3
sn40.4
sn40.5
sn40.6
sn40.7
sn40.8
sn40.9
sn40.10
sn40.11
sn41.1
sn41.2
sn41.3
sn41.4
sn41.5
sn41.6
sn41.7
sn41.8
sn41.9
sn41.10
sn42.1
sn42.2
sn42.3
sn42.4
sn42.5
sn42.6
sn42.7
sn42.8
sn42.9
sn42.10
sn42.11
sn42.12
sn42.13
sn43.1
sn43.2
sn43.3
sn43.4
sn43.5
sn43.6
sn43.7
sn43.8
sn43.9
sn43.10
sn43.11
sn43.12
sn43.13
sn43.14-43
sn43.44
sn44.1
sn44.2
sn44.3
sn44.4
sn44.5
sn44.6
sn44.7
sn44.8
sn44.9
sn44.10
sn44.11
sn45.1
sn45.2
sn45.3
sn45.4
sn45.5
sn45.6
sn45.7
sn45.8
sn45.9
sn45.10
sn45.11
sn45.12
sn45.13
sn45.14
sn45.15
sn45.16
sn45.17
sn45.18
sn45.19
sn45.20
sn45.21
sn45.22
sn45.23
sn45.24
sn45.25
sn45.26
sn45.27
sn45.28
sn45.29
sn45.30
sn45.31
sn45.32
sn45.33
sn45.34
sn45.35
sn45.36
sn45.37
sn45.38
sn45.39
sn45.40
sn45.41
sn45.42-47
sn45.48
sn45.49
sn45.50-54
sn45.55
sn45.56
sn45.57-61
sn45.62
sn45.63
sn45.64-68
sn45.69
sn45.70
sn45.71-75
sn45.76
sn45.77
sn45.78-82
sn45.83
sn45.84
sn45.85-89
sn45.90
sn45.91
sn45.92-95
sn45.96
sn45.97
sn45.98-102
sn45.103
sn45.104-108
sn45.109
sn45.110-114
sn45.115
sn45.116-120
sn45.121
sn45.122-126
sn45.127
sn45.128-132
sn45.133
sn45.134-138
sn45.139
sn45.140
sn45.141-145
sn45.146-148
sn45.149
sn45.150
sn45.151
sn45.152
sn45.153
sn45.154
sn45.155
sn45.156
sn45.157
sn45.158
sn45.159
sn45.160
sn45.161
sn45.162
sn45.163
sn45.164
sn45.165
sn45.166
sn45.167
sn45.168
sn45.169
sn45.170
sn45.171
sn45.172
sn45.173
sn45.174
sn45.175
sn45.176
sn45.177
sn45.178
sn45.179
sn45.180
sn46.1
sn46.2
sn46.3
sn46.4
sn46.5
sn46.6
sn46.7
sn46.8
sn46.9
sn46.10
sn46.11
sn46.12
sn46.13
sn46.14
sn46.15
sn46.16
sn46.17
sn46.18
sn46.19
sn46.20
sn46.21
sn46.22
sn46.23
sn46.24
sn46.25
sn46.26
sn46.27
sn46.28
sn46.29
sn46.30
sn46.31
sn46.32
sn46.33
sn46.34
sn46.35
sn46.36
sn46.37
sn46.38
sn46.39
sn46.40
sn46.41
sn46.42
sn46.43
sn46.44
sn46.45
sn46.46
sn46.47
sn46.48
sn46.49
sn46.50
sn46.51
sn46.52
sn46.53
sn46.54
sn46.55
sn46.56
sn46.57
sn46.58
sn46.59
sn46.60
sn46.61
sn46.62
sn46.63
sn46.64
sn46.65
sn46.66
sn46.67
sn46.68
sn46.69
sn46.70
sn46.71
sn46.72
sn46.73
sn46.74
sn46.75
sn46.76
sn46.77-88
sn46.89-98
sn46.99-110
sn46.111-120
sn46.121-129
sn46.130
sn46.131-142
sn46.143-152
sn46.153-164
sn46.165-174
sn46.175-184
sn47.1
sn47.2
sn47.3
sn47.4
sn47.5
sn47.6
sn47.7
sn47.8
sn47.9
sn47.10
sn47.11
sn47.12
sn47.13
sn47.14
sn47.15
sn47.16
sn47.17
sn47.18
sn47.19
sn47.20
sn47.21
sn47.22
sn47.23
sn47.24
sn47.25
sn47.26
sn47.27
sn47.28
sn47.29
sn47.30
sn47.31
sn47.32
sn47.33
sn47.34
sn47.35
sn47.36
sn47.37
sn47.38
sn47.39
sn47.40
sn47.41
sn47.42
sn47.43
sn47.44
sn47.45
sn47.46
sn47.47
sn47.48
sn47.49
sn47.50
sn47.51-62
sn47.63-72
sn47.73-84
sn47.85-94
sn47.95-104
sn48.1
sn48.2
sn48.3
sn48.4
sn48.5
sn48.6
sn48.7
sn48.8
sn48.9
sn48.10
sn48.11
sn48.12
sn48.13
sn48.14
sn48.15
sn48.16
sn48.17
sn48.18
sn48.19
sn48.20
sn48.21
sn48.22
sn48.23
sn48.24
sn48.25
sn48.26
sn48.27
sn48.28
sn48.29
sn48.30
sn48.31
sn48.32
sn48.33
sn48.34
sn48.35
sn48.36
sn48.37
sn48.38
sn48.39
sn48.40
sn48.41
sn48.42
sn48.43
sn48.44
sn48.45
sn48.46
sn48.47
sn48.48
sn48.49
sn48.50
sn48.51
sn48.52
sn48.53
sn48.54
sn48.55
sn48.56
sn48.57
sn48.58
sn48.59
sn48.60
sn48.61
sn48.62
sn48.63
sn48.64
sn48.65
sn48.66
sn48.67
sn48.68
sn48.69
sn48.70
sn48.71-82
sn48.83-92
sn48.93-104
sn48.105-114
sn48.115-124
sn48.125-136
sn48.137
sn48.147
sn48.159-168
sn48.169-178
sn49.1-12
sn49.13-22
sn49.23-34
sn49.35-44
sn49.45-54
sn50.1-12
sn50.13-22
sn50.23-34
sn50.35-44
sn50.45-54
sn50.55-66
sn50.67
sn50.77-88
sn50.89-98
sn50.99-108
sn51.1
sn51.2
sn51.3
sn51.4
sn51.5
sn51.6
sn51.7
sn51.8
sn51.9
sn51.10
sn51.11
sn51.12
sn51.13
sn51.14
sn51.15
sn51.16
sn51.17
sn51.18
sn51.19
sn51.20
sn51.21
sn51.22
sn51.23
sn51.24
sn51.25
sn51.26
sn51.27
sn51.28
sn51.29
sn51.30
sn51.31
sn51.32
sn51.33-44
sn51.45-54
sn51.55-66
sn51.67-76
sn51.77-86
sn52.1
sn52.2
sn52.3
sn52.4
sn52.5
sn52.6
sn52.7
sn52.8
sn52.9
sn52.10
sn52.11
sn52.12
sn52.13
sn52.14
sn52.15
sn52.16
sn52.17
sn52.18
sn52.19
sn52.20
sn52.21
sn52.22
sn52.23
sn52.24
sn53.1-12
sn53.13-22
sn53.23-34
sn53.35-44
sn53.45-54
sn54.1
sn54.2
sn54.3
sn54.4
sn54.5
sn54.6
sn54.7
sn54.8
sn54.9
sn54.10
sn54.11
sn54.12
sn54.13
sn54.14
sn54.15
sn54.16
sn54.17
sn54.18
sn54.19
sn54.20
sn55.1
sn55.2
sn55.3
sn55.4
sn55.5
sn55.6
sn55.7
sn55.8
sn55.9
sn55.10
sn55.11
sn55.12
sn55.13
sn55.14
sn55.15
sn55.16
sn55.17
sn55.18
sn55.19
sn55.20
sn55.21
sn55.22
sn55.23
sn55.24
sn55.25
sn55.26
sn55.27
sn55.28
sn55.29
sn55.30
sn55.31
sn55.32
sn55.33
sn55.34
sn55.35
sn55.36
sn55.37
sn55.38
sn55.39
sn55.40
sn55.41
sn55.42
sn55.43
sn55.44
sn55.45
sn55.46
sn55.47
sn55.48
sn55.49
sn55.50
sn55.51
sn55.52
sn55.53
sn55.54
sn55.55
sn55.56
sn55.57
sn55.58
sn55.59
sn55.60
sn55.61
sn55.62
sn55.63
sn55.64
sn55.65
sn55.66
sn55.67
sn55.68
sn55.69
sn55.70
sn55.71
sn55.72
sn55.73
sn55.74
sn56.1
sn56.2
sn56.3
sn56.4
sn56.5
sn56.6
sn56.7
sn56.8
sn56.9
sn56.10
sn56.11
sn56.12
sn56.13
sn56.14
sn56.15
sn56.16
sn56.17
sn56.18
sn56.19
sn56.20
sn56.21
sn56.22
sn56.23
sn56.24
sn56.25
sn56.26
sn56.27
sn56.28
sn56.29
sn56.30
sn56.31
sn56.32
sn56.33
sn56.34
sn56.35
sn56.36
sn56.37
sn56.38
sn56.39
sn56.40
sn56.41
sn56.42
sn56.43
sn56.44
sn56.45
sn56.46
sn56.47
sn56.48
sn56.49
sn56.50
sn56.51
sn56.52
sn56.53
sn56.54
sn56.55
sn56.56
sn56.57
sn56.58
sn56.59
sn56.60
sn56.61
sn56.62
sn56.63
sn56.64
sn56.65
sn56.66
sn56.67
sn56.68
sn56.69
sn56.70
sn56.71
sn56.72
sn56.73
sn56.74
sn56.75
sn56.76
sn56.77
sn56.78
sn56.79
sn56.80
sn56.81
sn56.82
sn56.83
sn56.84
sn56.85
sn56.86
sn56.87
sn56.88
sn56.89
sn56.90
sn56.91
sn56.92
sn56.93
sn56.94
sn56.95
sn56.96-101
sn56.102
sn56.103
sn56.104
sn56.105-107
sn56.108-110
sn56.111-113
sn56.114-116
sn56.117-119
sn56.120-122
sn56.123-125
sn56.126-128
sn56.129-130
sn56.131
pli-tv-bu-vb-ay
pli-tv-bu-vb-ay1
pli-tv-bu-vb-ay2
pli-tv-bu-vb-np
pli-tv-bu-vb-np1
pli-tv-bu-vb-np10
pli-tv-bu-vb-np11
pli-tv-bu-vb-np12
pli-tv-bu-vb-np13
pli-tv-bu-vb-np14
pli-tv-bu-vb-np15
pli-tv-bu-vb-np16
pli-tv-bu-vb-np17
pli-tv-bu-vb-np18
pli-tv-bu-vb-np19
pli-tv-bu-vb-np2
pli-tv-bu-vb-np20
pli-tv-bu-vb-np21
pli-tv-bu-vb-np22
pli-tv-bu-vb-np23
pli-tv-bu-vb-np24
pli-tv-bu-vb-np25
pli-tv-bu-vb-np26
pli-tv-bu-vb-np27
pli-tv-bu-vb-np28
pli-tv-bu-vb-np29
pli-tv-bu-vb-np3
pli-tv-bu-vb-np30
pli-tv-bu-vb-np4
pli-tv-bu-vb-np5
pli-tv-bu-vb-np6
pli-tv-bu-vb-np7
pli-tv-bu-vb-np8
pli-tv-bu-vb-np9
pli-tv-bu-vb-pc
pli-tv-bu-vb-pc1
pli-tv-bu-vb-pc10
pli-tv-bu-vb-pc11
pli-tv-bu-vb-pc12
pli-tv-bu-vb-pc13
pli-tv-bu-vb-pc14
pli-tv-bu-vb-pc15
pli-tv-bu-vb-pc16
pli-tv-bu-vb-pc17
pli-tv-bu-vb-pc18
pli-tv-bu-vb-pc19
pli-tv-bu-vb-pc2
pli-tv-bu-vb-pc20
pli-tv-bu-vb-pc21
pli-tv-bu-vb-pc22
pli-tv-bu-vb-pc23
pli-tv-bu-vb-pc24
pli-tv-bu-vb-pc25
pli-tv-bu-vb-pc26
pli-tv-bu-vb-pc27
pli-tv-bu-vb-pc28
pli-tv-bu-vb-pc29
pli-tv-bu-vb-pc3
pli-tv-bu-vb-pc30
pli-tv-bu-vb-pc31
pli-tv-bu-vb-pc32
pli-tv-bu-vb-pc33
pli-tv-bu-vb-pc34
pli-tv-bu-vb-pc35
pli-tv-bu-vb-pc36
pli-tv-bu-vb-pc37
pli-tv-bu-vb-pc38
pli-tv-bu-vb-pc39
pli-tv-bu-vb-pc4
pli-tv-bu-vb-pc40
pli-tv-bu-vb-pc41
pli-tv-bu-vb-pc42
pli-tv-bu-vb-pc43
pli-tv-bu-vb-pc44
pli-tv-bu-vb-pc45
pli-tv-bu-vb-pc46
pli-tv-bu-vb-pc47
pli-tv-bu-vb-pc48
pli-tv-bu-vb-pc49
pli-tv-bu-vb-pc5
pli-tv-bu-vb-pc50
pli-tv-bu-vb-pc6
pli-tv-bu-vb-pc7
pli-tv-bu-vb-pc8
pli-tv-bu-vb-pc9
pli-tv-bu-vb-pj
pli-tv-bu-vb-pj1
pli-tv-bu-vb-pj2
pli-tv-bu-vb-pj3
pli-tv-bu-vb-pj4
pli-tv-bu-vb-ss
pli-tv-bu-vb-ss1
pli-tv-bu-vb-ss10
pli-tv-bu-vb-ss11
pli-tv-bu-vb-ss12
pli-tv-bu-vb-ss13
pli-tv-bu-vb-ss2
pli-tv-bu-vb-ss3
pli-tv-bu-vb-ss4
pli-tv-bu-vb-ss5
pli-tv-bu-vb-ss6
pli-tv-bu-vb-ss7
pli-tv-bu-vb-ss8
pli-tv-bu-vb-ss9
dhp1-20
dhp100-115
dhp116-128
dhp129-145
dhp146-156
dhp157-166
dhp167-178
dhp179-196
dhp197-208
dhp209-220
dhp21-32
dhp221-234
dhp235-255
dhp256-272
dhp273-289
dhp290-305
dhp306-319
dhp320-333
dhp33-43
dhp334-359
dhp360-382
dhp383-423
dhp44-59
dhp60-75
dhp76-89
dhp90-99
iti1
iti10
iti100
iti101
iti102
iti103
iti104
iti105
iti106
iti107
iti108
iti109
iti11
iti110
iti111
iti112
iti12
iti13
iti14
iti15
iti16
iti17
iti18
iti19
iti2
iti20
iti21
iti22
iti23
iti24
iti25
iti26
iti27
iti28
iti29
iti3
iti30
iti31
iti32
iti33
iti34
iti35
iti36
iti37
iti38
iti39
iti4
iti40
iti41
iti42
iti43
iti44
iti45
iti46
iti47
iti48
iti49
iti5
iti50
iti51
iti52
iti53
iti54
iti55
iti56
iti57
iti58
iti59
iti6
iti60
iti61
iti62
iti63
iti64
iti65
iti66
iti67
iti68
iti69
iti7
iti70
iti71
iti72
iti73
iti74
iti75
iti76
iti77
iti78
iti79
iti8
iti80
iti81
iti82
iti83
iti84
iti85
iti86
iti87
iti88
iti89
iti9
iti90
iti91
iti92
iti93
iti94
iti95
iti96
iti97
iti98
iti99
snp1.1
snp1.10
snp1.11
snp1.12
snp1.2
snp1.3
snp1.4
snp1.5
snp1.6
snp1.7
snp1.8
snp1.9
snp2.1
snp2.10
snp2.11
snp2.12
snp2.13
snp2.14
snp2.2
snp2.3
snp2.4
snp2.5
snp2.6
snp2.7
snp2.8
snp2.9
snp3.1
snp3.10
snp3.11
snp3.12
snp3.2
snp3.3
snp3.4
snp3.5
snp3.6
snp3.7
snp3.8
snp3.9
snp4.1
snp4.10
snp4.11
snp4.12
snp4.13
snp4.14
snp4.15
snp4.16
snp4.2
snp4.3
snp4.4
snp4.5
snp4.6
snp4.7
snp4.8
snp4.9
snp5.1
snp5.10
snp5.11
snp5.12
snp5.13
snp5.14
snp5.15
snp5.16
snp5.17
snp5.18
snp5.19
snp5.2
snp5.3
snp5.4
snp5.5
snp5.6
snp5.7
snp5.8
snp5.9
thag1.1
thag1.10
thag1.100
thag1.101
thag1.102
thag1.103
thag1.104
thag1.105
thag1.106
thag1.107
thag1.108
thag1.109
thag1.11
thag1.110
thag1.111
thag1.112
thag1.113
thag1.114
thag1.115
thag1.116
thag1.117
thag1.118
thag1.119
thag1.12
thag1.120
thag1.13
thag1.14
thag1.15
thag1.16
thag1.17
thag1.18
thag1.19
thag1.2
thag1.20
thag1.21
thag1.22
thag1.23
thag1.24
thag1.25
thag1.26
thag1.27
thag1.28
thag1.29
thag1.3
thag1.30
thag1.31
thag1.32
thag1.33
thag1.34
thag1.35
thag1.36
thag1.37
thag1.38
thag1.39
thag1.4
thag1.40
thag1.41
thag1.42
thag1.43
thag1.44
thag1.45
thag1.46
thag1.47
thag1.48
thag1.49
thag1.5
thag1.50
thag1.51
thag1.52
thag1.53
thag1.54
thag1.55
thag1.56
thag1.57
thag1.58
thag1.59
thag1.6
thag1.60
thag1.61
thag1.62
thag1.63
thag1.64
thag1.65
thag1.66
thag1.67
thag1.68
thag1.69
thag1.7
thag1.70
thag1.71
thag1.72
thag1.73
thag1.74
thag1.75
thag1.76
thag1.77
thag1.78
thag1.79
thag1.8
thag1.80
thag1.81
thag1.82
thag1.83
thag1.84
thag1.85
thag1.86
thag1.87
thag1.88
thag1.89
thag1.9
thag1.90
thag1.91
thag1.92
thag1.93
thag1.94
thag1.95
thag1.96
thag1.97
thag1.98
thag1.99
thag10.1
thag10.2
thag10.3
thag10.4
thag10.5
thag10.6
thag10.7
thag11.1
thag12.1
thag12.2
thag13.1
thag14.1
thag14.2
thag15.1
thag15.2
thag16.1
thag16.10
thag16.2
thag16.3
thag16.4
thag16.5
thag16.6
thag16.7
thag16.8
thag16.9
thag17.1
thag17.2
thag17.3
thag18.1
thag19.1
thag2.1
thag2.10
thag2.11
thag2.12
thag2.13
thag2.14
thag2.15
thag2.16
thag2.17
thag2.18
thag2.19
thag2.2
thag2.20
thag2.21
thag2.22
thag2.23
thag2.24
thag2.25
thag2.26
thag2.27
thag2.28
thag2.29
thag2.3
thag2.30
thag2.31
thag2.32
thag2.33
thag2.34
thag2.35
thag2.36
thag2.37
thag2.38
thag2.39
thag2.4
thag2.40
thag2.41
thag2.42
thag2.43
thag2.44
thag2.45
thag2.46
thag2.47
thag2.48
thag2.49
thag2.5
thag2.6
thag2.7
thag2.8
thag2.9
thag20.1
thag21.1
thag3.1
thag3.10
thag3.11
thag3.12
thag3.13
thag3.14
thag3.15
thag3.16
thag3.2
thag3.3
thag3.4
thag3.5
thag3.6
thag3.7
thag3.8
thag3.9
thag4.1
thag4.10
thag4.11
thag4.12
thag4.2
thag4.3
thag4.4
thag4.5
thag4.6
thag4.7
thag4.8
thag4.9
thag5.1
thag5.10
thag5.11
thag5.12
thag5.2
thag5.3
thag5.4
thag5.5
thag5.6
thag5.7
thag5.8
thag5.9
thag6.1
thag6.10
thag6.11
thag6.12
thag6.13
thag6.14
thag6.2
thag6.3
thag6.4
thag6.5
thag6.6
thag6.7
thag6.8
thag6.9
thag7.1
thag7.2
thag7.3
thag7.4
thag7.5
thag8.1
thag8.2
thag8.3
thag9.1
thig1.1
thig1.10
thig1.11
thig1.12
thig1.13
thig1.14
thig1.15
thig1.16
thig1.17
thig1.18
thig1.2
thig1.3
thig1.4
thig1.5
thig1.6
thig1.7
thig1.8
thig1.9
thig10.1
thig11.1
thig12.1
thig13.1
thig13.2
thig13.3
thig13.4
thig13.5
thig14.1
thig15.1
thig16.1
thig2.1
thig2.10
thig2.2
thig2.3
thig2.4
thig2.5
thig2.6
thig2.7
thig2.8
thig2.9
thig3.1
thig3.2
thig3.3
thig3.4
thig3.5
thig3.6
thig3.7
thig3.8
thig4.1
thig5.1
thig5.10
thig5.11
thig5.12
thig5.2
thig5.3
thig5.4
thig5.5
thig5.6
thig5.7
thig5.8
thig5.9
thig6.1
thig6.2
thig6.3
thig6.4
thig6.5
thig6.6
thig6.7
thig6.8
thig7.1
thig7.2
thig7.3
thig8.1
thig9.1
ud1.1
ud1.10
ud1.2
ud1.3
ud1.4
ud1.5
ud1.6
ud1.7
ud1.8
ud1.9
ud2.1
ud2.10
ud2.2
ud2.3
ud2.4
ud2.5
ud2.6
ud2.7
ud2.8
ud2.9
ud3.1
ud3.10
ud3.2
ud3.3
ud3.4
ud3.5
ud3.6
ud3.7
ud3.8
ud3.9
ud4.1
ud4.10
ud4.2
ud4.3
ud4.4
ud4.5
ud4.6
ud4.7
ud4.8
ud4.9
ud5.1
ud5.10
ud5.2
ud5.3
ud5.4
ud5.5
ud5.6
ud5.7
ud5.8
ud5.9
ud6.1
ud6.10
ud6.2
ud6.3
ud6.4
ud6.5
ud6.6
ud6.7
ud6.8
ud6.9
ud7.1
ud7.10
ud7.2
ud7.3
ud7.4
ud7.5
ud7.6
ud7.7
ud7.8
ud7.9
ud8.1
ud8.10
ud8.2
ud8.3
ud8.4
ud8.5
ud8.6
ud8.7
ud8.8
ud8.9
2 Likes

AN 4.106 is still lacking in the list; it has been added recently.

1 Like

sorry, I’m not going to go through that whole list!

Yes, that would be best.

I’m curious if you were thinking to make a replacement rule for every single sutta. My idea was that you would just create a regex for each book and be done with it. If people try to create a citation for MN 234, then that’s on them.

Have you figured out what the plugin will do if a citation is already linked? Will it ignore it or will it double link?

What I meant is if you happen to have a list of all the suttas on SC to compare, I wouldn’t want to go through it by hand either :grin:. I’ll try to figure out where I pulled the list from the last time.

No, of course not, but we want the regex to link dn34 but not dn35 or dn0, which means the regex rule is a bit more nuanced than dn\d+, but

ideally we can avoid that (and it’s not that difficult, I already have the rules figured out, just need to test them for edge cases).

It will link all occurrences in all posts.

There are some technical issues with the component (a crucial part of regex syntax is not recognised/ misinterpreted) so this will take some tome to fix (luckily this is an official component and the devs on Discourse are usually quick to fix such minor issues).

2 Likes

So if a citation is already linked, then you will end up with something like this:

[[MN1](https://suttacentral.net/mn1/en/sujato)](https://suttacentral.net/[mn1](https://suttacentral.net/mn1/en/sujato)/en/sujato)

which will render into this:
[MN1](SuttaCentral)

Because there’s going to be tons of historical posts that already have citations linked. And some of them will be to places other than Bhante Sujato’s translations, eh?

Or maybe I’m misunderstanding. Perhaps the plugin could have a setting so that replacements never happened on existing links.

2 Likes

What happens with quotes like this?

MN1:171.4: ‘Nandī dukkhassa mūlan’ti—
Because he has understood that relishing is the root of suffering,

This is something I do quite regularly.

2 Likes

Ah yes, I misunderstood, but good point. This component (not a plugin) only performs rendering of the cooked html of the post on the client using jscript, so it doesn’t actually change the raw post.

But there is still the issue of links entered in the raw post and this is where this part comes in

which means some magic will be need to be performed directly on the server to replace both direct links https://suttacentral.net/* as well as markdown []() and html <a href> ones.

Luckily this can be accomplished with some clever regex find and replace from the server console, which will have to be done manually.

Bhante @Sujato, for the newly pasted links it would be ideal if SuttaCentral could provide the correct OpenGraph metadata for Title and Canonical, which would enable Discourse to automatically onebox them correctly like this https://discourse.suttacentral.net/t/automatically-linking-up-citations-to-suttas-on-d-d/25637/11Automatically linking up citations to suttas on D&D - #11 by Snowbird instead of this https://suttacentral.net/mn1/en/sujatoSuttaCentral

Then we could have the best combination of entering direct short notation (DN 1 or dn1) into raw post and it would both be renderd as a linkified DN1 using Linkify component and

  • suttacentral.net → SuttaCentral
  • suttacentral.net\dn → Digha Nikaya (or SuttaCentral—Digha Nikaya)
  • suttacentral.net\dn1 → DN 1 (or DN1 or dn1 or SuttaCentral—DN 1)
  • suttacentral.net\dn1\en\sujato → DN 1 by Sujato (or SuttaCentral—DN 1 by Sujato)

which would be linkified using native Discourse oneboxing.

One benefit of fixing the OpenGraph metadata would be that the find/ replace of the text in historical posts wouldn’t be required, as it would automatically fix itself by much simpler rebaking.

Ideally this would also be fixed by setting the correct metadata:

https://suttacentral.net/mn1/en/sujato#mn1:171.4

and you wouldn’t even need to construct the markdown manually, because this link will automatically render as inline onebox with the correct title MN1:171.4

We can of course choose which historical posts to fix or leave as is.

OpenGraph metadata can be checked with http://debug.iframely.com

1 Like

This is the point: I don’t construct them manually.

When I enter mn1:171.4 -om in scv-bilara search, I get this output which I just copy to the post where I want it (the -om flag stands for “output markdown”):

> [MN1:171.4](https://suttacentral.net/mn1/en/sujato#mn1:171.4): ‘Nandī dukkhassa mūlan’ti—
> [MN1:171.4](https://suttacentral.net/mn1/en/sujato#mn1:171.4): Because he has understood that relishing is the root of suffering,

I only remove the second link that is in the translation line.

The open graph data/onebox is really a separate issue, isn’t it? I thought this was about turning the citations that people typed into markdown links. Or are you talking about replacing the citations with links and then letting onebox do it’s magic?

I’m also quite skeptical of any regex wizardry in this situation. We are dealing with user input, remember.

But I’m keen to see what can be done. Thanks for looking into this.

This is more complex than it looks, unfortunately. We do hope to fix it, but it isn’t on the immediate roadmap (waiting for lit-ssr and developer time.)

I’d recommend keeping this plugin simple, don’t try to cover all use cases.

2 Likes

This is actually the easier part (already done), see regex rules here:

This has been implemented for DN, MN, Dhp and Iti (this will work for all existing and new IDs inside posts and it needs browser refresh). Here are some of the samples for valid an invalid sutta IDs, automatically linkified to SC:

DN MN Dhp Iti
DN0 MN0 DHP0 ITI0
Dn0 Mn0 Dhp0 Iti0
dn0 mn0 dhp0 iti0
DN1 MN1 DHP1 ITI1
Dn1 Mn1 Dhp1 Iti1
dn1 mn1 dhp1 iti1
DN 2 MN 2 DHP 2 ITI 2
Dn 2 Mn 2 Dhp 2 Iti 2
dn 2 mn 2 dhp 2 iti 2
DN 34 MN 152 DHP 423 ITI 112
Dn 34 Mn 152 Dhp 423 Iti 112
dn34 mn152 dhp423 iti112
DN35 MN153 DHP424 ITI113
Dn 35 Mn 153 Dhp 424 Iti 113
dn 35 mn 153 dhp 424 iti 113

But there are also several issues with the Linkify words in post - theme-component - Discourse Meta component:

  • regex OR operator (|) is reserved as a separator for multiple rules input tool and this is currently still hardcoded in core, which means all compact regex rules must be expanded into multiple rules (this is doable, but harder to maintain)
  • the component allows for mapping spaces and non-break spaces, but not all whitespaces using \s (but this should cover most cases anyway)
  • the crucial showstopper is that the component delimits words at word boundary, which includes dot (.). This makes it impossible to linkify AN, SN, Snp, Thag, Thig and Ud.

Fixing this shouldn’t be too hard, as this component is pure javascript. Best approach would be to create a fork from GitHub - discourse/discourse-linkify-words: theme to auto linkify urls in discourse and add this functionality:

  • add configurable word boundary list instead of hardcoded ones
  • use a substitute character for | (configurable, with default ¦) for rules input and replace it to | in code

Bhante @snowbird, what do you think?

2 Likes

Is it possible to link to a text in another translation language? Or how about just linking to the Suttaplex card?

1 Like

It’s only possible to have one base link per ID, so it makes the most sense to link it directly to the most complete collection of translations.

This will cover the vast majority of cases, and for advanced users, the Suttaplex is only one click away.

1 Like

What I had been afraid of is that explicit links to other places will get overwritten by this default, but this is not the case, as far as I can see. So my apprehension is dissolved! :smiley:

1 Like