Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(248)

Side by Side Diff: chrome/browser/policy/proto/chromeos/chrome_device_policy.proto

Issue 137903004: Removed the old policy protobufs location. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 syntax = "proto2";
6
7 option optimize_for = LITE_RUNTIME;
8
9 package enterprise_management;
10
11 message DevicePolicyRefreshRateProto {
12 // In milliseconds.
13 optional int64 device_policy_refresh_rate = 1;
14 }
15
16 message UserWhitelistProto {
17 // If a UserWhitelistProto is included in the ChromeDeviceSettingsProto but
18 // the user_whitelist field is empty then no user can sign-in.
19 repeated string user_whitelist = 1;
20 }
21
22 message AllowNewUsersProto {
23 // Determines whether we allow arbitrary users to log into the device.
24 // This interacts with the UserWhitelistProto as follows:
25 // allow_new_users | user_whitelist | anyone can log in
26 //-----------------+--------------------+------------------
27 // present, true | not present | Yes
28 //-----------------+--------------------+------------------
29 // present, true | present | Yes
30 //-----------------+--------------------+------------------
31 // present, false | not present | (Broken) Yes
32 //-----------------+--------------------+------------------
33 // present, false | present | No, W/L enforced
34 //-----------------+--------------------+------------------
35 // not present | not present | Yes
36 //-----------------+--------------------+------------------
37 // not present | present, empty | Yes
38 //-----------------+--------------------+------------------
39 // not present | present, non-empty | No, W/L enforced
40 //-----------------+--------------------+------------------
41 optional bool allow_new_users = 1 [default = true];
42 }
43
44 message GuestModeEnabledProto {
45 // Determines if guests are allowed to log in to the device.
46 optional bool guest_mode_enabled = 1 [default = true];
47 }
48
49 message ShowUserNamesOnSigninProto {
50 // Determines if we show pods for existing users on the sign in screen.
51 optional bool show_user_names = 1 [default = true];
52 }
53
54 message DataRoamingEnabledProto {
55 // Determines if cellular data roaming is enabled.
56 optional bool data_roaming_enabled = 1 [default = false];
57 }
58
59 message DeviceProxySettingsProto {
60 // One of "direct", "auto_detect", "pac_script", "fixed_servers", "system"
61 optional string proxy_mode = 1;
62 optional string proxy_server = 2;
63 optional string proxy_pac_url = 3;
64 optional string proxy_bypass_list = 4;
65 }
66
67 // This is used by chromeos, make sure to do cleanup there before marking it as
68 // obsolette.
69 message CameraEnabledProto {
70 optional bool camera_enabled = 1;
71 }
72
73 message MetricsEnabledProto {
74 optional bool metrics_enabled = 1;
75 }
76
77 message ReleaseChannelProto {
78 // One of "stable-channel", "beta-channel", or "dev-channel"
79 optional string release_channel = 1;
80
81 // If |release_channel_delegated| is set to true and the |release_channel|
82 // field is not set or left empty, the user can select the channel. If the
83 // |release_channel| is specified it will always override users choice!
84 optional bool release_channel_delegated = 2;
85 }
86
87 message DeviceOpenNetworkConfigurationProto {
88 // The network configuration blob. This is a JSON string as specified by ONC.
89 optional string open_network_configuration = 1;
90 }
91
92 // Policies to turn on portions of the device status reports.
93 message DeviceReportingProto {
94 optional bool report_version_info = 1;
95 optional bool report_activity_times = 2;
96 optional bool report_boot_mode = 3;
97 optional bool report_location = 4;
98 optional bool report_network_interfaces = 5;
99 optional bool report_users = 6;
100 }
101
102 message EphemeralUsersEnabledProto {
103 // Determines whether users should be treated as ephemeral. In ephemeral users
104 // mode, no cryptohome is created for the user, but a tmpfs mount is used
105 // instead such that upon logout all user state is discarded.
106 optional bool ephemeral_users_enabled = 1;
107 }
108
109 // Details of an extension to install as part of the AppPack.
110 message AppPackEntryProto {
111 optional string extension_id = 1;
112 optional string update_url = 2;
113
114 // This field was added but never used and there are no plans to support it
115 // eventually either.
116 optional bool OBSOLETE_online_only = 3 [deprecated = true];
117 }
118
119 message AppPackProto {
120 // List of extensions to install as part of the AppPack.
121 repeated AppPackEntryProto app_pack = 1;
122 }
123
124 // This is a special policy for kiosk/retail mode that specifies what apps
125 // should be pinned to the launcher. For regular accounts, pinned apps are
126 // controlled through user policy.
127 message PinnedAppsProto {
128 // App IDs for the apps to pin.
129 repeated string app_id = 1;
130 }
131
132 message ForcedLogoutTimeoutsProto {
133 // All timeouts are specified in milliseconds.
134
135 // Specifies the timeout before an idle user session is terminated.
136 // If this field is omitted or set to 0, no logout on idle will be performed.
137 optional int64 idle_logout_timeout = 1;
138
139 // Specifies the duration of a warning countdown before the user is logged out
140 // because of idleness as specified by the |idle_logout_timeout| value.
141 // This field is only used if |idle_logout_timeout| != 0 is specified.
142 optional int64 idle_logout_warning_duration = 2;
143 }
144
145 message ScreenSaverProto {
146 // Specifies the extension ID which is to be used as a screen saver on the
147 // login screen if no user activity is present. Only respected if the device
148 // is in RETAIL mode.
149 optional string screen_saver_extension_id = 1;
150
151 // Specifies the timeout before the screen saver is activated. If this field
152 // is omitted or set to 0, no screen-saver will be started.
153 // Measured in milliseconds.
154 optional int64 screen_saver_timeout = 2;
155 }
156
157 // Enterprise controls for auto-update behavior of Chrome OS.
158 message AutoUpdateSettingsProto {
159 // True if we don't want the device to auto-update (target_version_prefix is
160 // ignored in this case).
161 optional bool update_disabled = 1;
162
163 // Specifies the prefix of the target version we want the device to
164 // update to, if it's on a older version. If the device is already on
165 // a version with the given prefix, then there's no effect. If the device is
166 // on a higher version, it will remain on the higher version as we
167 // don't support rollback yet. The format of this version can be one
168 // of the following:
169 // ---------------------------------------------------------------------
170 // "" (or not set at all): update to latest version available.
171 // 1412.: update to any minor version of 1412 (e.g. 1412.24.34 or 1412.60.2)
172 // 1412.2.: update to any minor version of 1412.2 (e.g. 1412.2.34 or 1412.2.2)
173 // 1412.24.34: update to this specific version only
174 // ---------------------------------------------------------------------
175 optional string target_version_prefix = 2;
176
177 // The Chrome browser version (e.g. "17.*") corresponding to the
178 // target_version_prefix above. The target_version_prefix is the internal OS
179 // version that external users normally are not aware of. This display_name
180 // can be used by the devices to display a message to end-users about the auto
181 // update setting.
182 optional string target_version_display_name = 3;
183
184 // Specifies the number of seconds up to which a device may randomly
185 // delay its download of an update from the time the update was first pushed
186 // out to the server. The device may wait a portion of this time in terms
187 // of wall-clock-time and the remaining portion in terms of the number of
188 // update checks. In any case, the scatter is upper bounded by a constant
189 // amount of time so that a device does not ever get stuck waiting to download
190 // an update forever.
191 optional int64 scatter_factor_in_seconds = 4;
192
193 // Enumerates network connection types.
194 enum ConnectionType {
195 CONNECTION_TYPE_ETHERNET = 0;
196 CONNECTION_TYPE_WIFI = 1;
197 CONNECTION_TYPE_WIMAX = 2;
198 CONNECTION_TYPE_BLUETOOTH = 3;
199 CONNECTION_TYPE_CELLULAR = 4;
200 }
201
202 // The types of connections that are OK to use for OS updates. OS updates
203 // potentially put heavy strain on the connection due to their size and may
204 // incur additional cost. Therefore, they are by default not enabled for
205 // connection types that are considered expensive, which include WiMax,
206 // Bluetooth and Cellular at the moment.
207 repeated ConnectionType allowed_connection_types = 5;
208
209 // This has been replaced by |reboot_after_update| below.
210 optional bool OBSOLETE_reboot_after_update = 6 [deprecated = true];
211
212 // True if AU payloads can be downloaded via HTTP. False otherwise.
213 optional bool http_downloads_enabled = 7 [default = false];
214
215 // True if the device should reboot automatically when an update has been
216 // applied and a reboot is required to complete the update process.
217 //
218 // Note: Currently, automatic reboots are only enabled while the login screen
219 // is being shown or a kiosk app session is in progress. This will change in
220 // the future and the policy will always apply, regardless of whether a
221 // session of any particular type is in progress or not.
222 optional bool reboot_after_update = 8;
223
224 // True if AU payloads may be shared with and consumed from other devices
225 // on the LAN, using p2p. False otherwise.
226 optional bool p2p_enabled = 9 [default = false];
227 }
228
229 message StartUpUrlsProto {
230 // Specifies the URLs to be loaded on login to the anonymous account used if
231 // the device is in RETAIL mode.
232 repeated string start_up_urls = 1;
233 }
234
235 message SystemTimezoneProto {
236 // Specifies an owner-determined timezone that applies to the login screen and
237 // all users. Valid values are listed in "timezone_settings.cc". Additionally,
238 // timezones from the "IANA Time Zone Database" (e.g. listed on wikipedia)
239 // that are equivalent to one of the timezones in "timezone_settings.cc" are
240 // valid. In case of an invalid value, the setting is still activated with a
241 // fallback timezone (currently "GMT"). In case of an empty string or if no
242 // value is provided, the timezone device setting is inactive. In that case,
243 // the currently active timezone will remain in use however users can change
244 // the timezone and the change is persistent. Thus a change by one user
245 // affects the login-screen and all other users.
246 optional string timezone = 1;
247 }
248
249 message SystemUse24HourClockProto {
250 // Specifies an owner-determined clock format that applies to the login
251 // screen and is used as a default for all user sessions. Users can still
252 // override the format to use for their account.
253 //
254 // True and false select a 24 and 12 hour clock format, respectively. The
255 // default format for the case the setting is not present is 24 hour clock.
256 optional bool use_24hour_clock = 1;
257 }
258
259 // Parameters for Kiosk App device-local accounts.
260 message KioskAppInfoProto {
261 // Indicates the Kiosk App for the corresponding device-local account. The
262 // string value should be a valid 32-character Chrome App identifier and
263 // specifies the Kiosk App to download and run.
264 optional string app_id = 1;
265
266 // Obsolete: Kiosk Apps can only be installed from the Chrome Web Store.
267 optional string OBSOLETE_update_url = 2 [deprecated = true];
268 }
269
270 // Describes a single device-local account.
271 message DeviceLocalAccountInfoProto {
272 // Deprecated: Account identifier for a public session device-local account.
273 // Old code didn't have the |type| field, so it can't handle new types of
274 // device-local accounts gracefully (i.e. ignoring unsupported types). New
275 // code should instead set type to ACCOUNT_TYPE_PUBLIC_SESSION and write the
276 // identifier to the |account_id| field below. If the |type| field is present,
277 // |deprecated_public_session_id| will be ignored.
278 optional string deprecated_public_session_id = 1;
279
280 // Identifier for the device-local account. This is an opaque identifier that
281 // is used to distinguish different device-local accounts configured. All
282 // configured accounts on a device must have unique identifiers.
283 optional string account_id = 2;
284
285 // Indicates the type of device-local account.
286 enum AccountType {
287 // A login-less, policy-configured browsing session.
288 ACCOUNT_TYPE_PUBLIC_SESSION = 0;
289 // An account that serves as a container for a single full-screen app.
290 ACCOUNT_TYPE_KIOSK_APP = 1;
291 };
292
293 // The account type.
294 optional AccountType type = 3;
295
296 // Kiosk App parameters, relevant if |type| is ACCOUNT_TYPE_KIOSK_APP.
297 optional KioskAppInfoProto kiosk_app = 4;
298 }
299
300 message DeviceLocalAccountsProto {
301 // The list of device-local accounts (i.e. accounts without an associated
302 // cloud-backed profile) that are available on the device.
303 repeated DeviceLocalAccountInfoProto account = 1;
304
305 // The identifier of the device-local account to which the device
306 // should be logged in automatically. Should be equal to one of the
307 // ids in DeviceLocalAccountInfoProto.
308 optional string auto_login_id = 2;
309
310 // The amount of time, in milliseconds, that should elapse at the signin
311 // screen without user interaction before automatically logging in.
312 optional int64 auto_login_delay = 3;
313
314 // Whether the keyboard shortcut to prevent zero-delay auto-login should be
315 // enabled or not. If this keyboard shortcut is engaged, the auto-login will
316 // be delayed by 3 seconds so administrators can log in or make configuration
317 // changes.
318 optional bool enable_auto_login_bailout = 4 [default = true];
319
320 // Whether network configuration should be offered or not when the device
321 // does not have access to the Internet. If the policy is omitted or set to
322 // true, the network configuration will be offered. Otherwise, only an error
323 // message is displayed.
324 // Note: If both this policy and enable_auto_login_bailout policy above is
325 // set to false, there are chances that the device might become totally
326 // unusable when there is no Internet access and has to go through the
327 // recovery process.
328 optional bool prompt_for_network_when_offline = 5 [default = true];
329 }
330
331 message AllowRedeemChromeOsRegistrationOffersProto {
332 // Chrome OS Registration service provides way for chromeos device users
333 // to redeem electronic offers provided by service provider.
334 // This value determines if users are allowed to redeem offers through
335 // Chrome OS Registration service.
336 optional bool allow_redeem_offers = 1 [default = true];
337 }
338
339 message StartUpFlagsProto {
340 // The list of flags to be applied to chrome on start-up (back up store for
341 // owner set flags in about:flags).
342 repeated string flags = 1;
343 }
344
345 message UptimeLimitProto {
346 // This has been replaced by |uptime_limit| below.
347 optional int64 OBSOLETE_uptime_limit = 1 [deprecated = true];
348
349 // Sets the length of device uptime after which an automatic reboot is
350 // scheduled. An automatic reboot is scheduled at the selected time but may be
351 // delayed on the device by up to 24 hours, e.g. if a user is currently using
352 // the device or an app/extension has requested reboots to be inhibited
353 // temporarily. The policy value should be specified in seconds.
354 //
355 // Note: Currently, automatic reboots are only enabled while the login screen
356 // is being shown or a kiosk app session is in progress. This will change in
357 // the future and the policy will always apply, regardless of whether a
358 // session of any particular type is in progress or not.
359 optional int64 uptime_limit = 2;
360 }
361
362 message VariationsParameterProto {
363 // The string for the restrict parameter to be appended to the Variations URL
364 // when pinging the Variations server.
365 optional string parameter = 1;
366 }
367
368 message AttestationSettingsProto {
369 // Attestation involves proving that a cryptographic key is protected by a
370 // legitimate Chrome OS TPM and reporting the operating mode of the platform.
371 // This setting enables enterprise attestation features at a device level. If
372 // this is enabled a machine key will be generated and certified by the Chrome
373 // OS CA. If this setting is disabled, even users with attestation settings
374 // enabled will not be able to use those features on the device.
375 optional bool attestation_enabled = 1 [default = false];
376
377 // Chrome OS devices can use remote attestation (Verified Access) to get a
378 // certificate issued by the Chrome OS CA that asserts the device is eligible
379 // to play protected content. This process involves sending hardware
380 // endorsement information to the Chrome OS CA which uniquely identifies the
381 // device. This setting allows this feature to be disabled for the device
382 // regardless of any user-specific settings.
383 optional bool content_protection_enabled = 2 [default = true];
384 }
385
386 message AccessibilitySettingsProto {
387 // Sets the default state of the large cursor accessibility feature on the
388 // login screen. If this policy is set to true, the large cursor will be
389 // enabled when the login screen is shown. If this policy is set to false, the
390 // large cursor will be disabled when the login screen is shown. Users can
391 // temporarily override this setting by enabling or disabling the large
392 // cursor. However, the user's choice is not persistent and the default is
393 // restored whenever the login screen is shown anew or the user remains idle
394 // on the login screen for a minute. If this policy is left unset, the large
395 // cursor is disabled when the login screen is first shown. Users can enable
396 // or disable the large cursor anytime and its status on the login screen is
397 // persisted between users.
398 optional bool login_screen_default_large_cursor_enabled = 1;
399
400 // Sets the default state of the spoken feedback accessibility feature on the
401 // login screen. If this policy is set to true, spoken feedback will be
402 // enabled when the login screen is shown. If this policy is set to false,
403 // spoken feedback will be disabled when the login screen is shown. Users can
404 // temporarily override this setting by enabling or disabling spoken feedback.
405 // However, the user's choice is not persistent and the default is restored
406 // whenever the login screen is shown anew or the user remains idle on the
407 // login screen for a minute. If this policy is left unset, spoken feedback is
408 // disabled when the login screen is first shown. Users can enable or disable
409 // spoken feedback anytime and its status on the login screen is persisted
410 // between users.
411 optional bool login_screen_default_spoken_feedback_enabled = 2;
412
413 // Sets the default state of the high contrast mode accessibility feature on
414 // the login screen. If this policy is set to true, high contrast mode will be
415 // enabled when the login screen is shown. If this policy is set to false,
416 // high contrast mode will be disabled when the login screen is shown. Users
417 // can temporarily override this setting by enabling or disabling high
418 // contrast mode. However, the user's choice is not persistent and the default
419 // is restored whenever the login screen is shown anew or the user remains
420 // idle on the login screen for a minute. If this policy is left unset, high
421 // contrast mode is disabled when the login screen is first shown. Users can
422 // enable or disable high contrast mode anytime and its status on the login
423 // screen is persisted between users.
424 optional bool login_screen_default_high_contrast_enabled = 3;
425
426 // Enumerates the screen magnifier types.
427 enum ScreenMagnifierType {
428 // Screen magnifier disabled.
429 SCREEN_MAGNIFIER_TYPE_NONE = 0;
430 // Full-screen magnifier enabled.
431 SCREEN_MAGNIFIER_TYPE_FULL = 1;
432 };
433
434 // Sets the default type of screen magnifier that is enabled on the login
435 // screen. If this policy is set, it controls the type of screen magnifier
436 // that is enabled when the login screen is shown. Users can temporarily
437 // override this setting by enabling or disabling the screen magnifier.
438 // However, the user's choice is not persistent and the default is restored
439 // whenever the login screen is shown anew or the user remains idle on the
440 // login screen for a minute. If this policy is left unset, the screen
441 // magnifier is disabled when the login screen is first shown. Users can
442 // enable or disable the screen magnifier anytime and its status on the login
443 // screen is persisted between users.
444 optional ScreenMagnifierType login_screen_default_screen_magnifier_type = 4;
445 }
446
447 message SupervisedUsersSettingsProto {
448 // Defines whether supervised users can be created on the device.
449 optional bool supervised_users_enabled = 1;
450 }
451
452 message LoginScreenPowerManagementProto {
453 // Configures power management on the login screen. The policy should be
454 // specified as a string that expresses the individual settings in JSON
455 // format, conforming to the following schema:
456 // {
457 // "type": "object",
458 // "properties": {
459 // "AC": {
460 // "description": "Power management settings applicable only when
461 // running on AC power",
462 // "type": "object",
463 // "properties": {
464 // "Delays": {
465 // "type": "object",
466 // "properties": {
467 // "ScreenDim": {
468 // "description": "The length of time without user input after
469 // which the screen is dimmed, in milliseconds",
470 // "type": "integer",
471 // "minimum": 0
472 // },
473 // "ScreenOff": {
474 // "description": "The length of time without user input after
475 // which the screen is turned off, in
476 // milliseconds",
477 // "type": "integer",
478 // "minimum": 0
479 // },
480 // "Idle": {
481 // "description": "The length of time without user input after
482 // which the idle action is taken, in
483 // milliseconds",
484 // "type": "integer",
485 // "minimum": 0
486 // }
487 // }
488 // },
489 // "IdleAction": {
490 // "description": "Action to take when the idle delay is reached",
491 // "enum": [ "Suspend", "Shutdown", "DoNothing" ]
492 // }
493 // }
494 // },
495 // "Battery": {
496 // "description": "Power management settings applicable only when
497 // running on battery power",
498 // "type": "object",
499 // "properties": {
500 // "Delays": {
501 // "type": "object",
502 // "properties": {
503 // "ScreenDim": {
504 // "description": "The length of time without user input after
505 // which the screen is dimmed, in milliseconds",
506 // "type": "integer",
507 // "minimum": 0
508 // },
509 // "ScreenOff": {
510 // "description": "The length of time without user input after
511 // which the screen is turned off, in
512 // milliseconds",
513 // "type": "integer",
514 // "minimum": 0
515 // },
516 // "Idle": {
517 // "description": "The length of time without user input after
518 // which the idle action is taken, in
519 // milliseconds",
520 // "type": "integer",
521 // "minimum": 0
522 // }
523 // }
524 // },
525 // "IdleAction": {
526 // "description": "Action to take when the idle delay is reached",
527 // "enum": [ "Suspend", "Shutdown", "DoNothing" ]
528 // }
529 // }
530 // },
531 // "LidCloseAction": {
532 // "description": "Action to take when the lid is closed",
533 // "enum": [ "Suspend", "Shutdown", "DoNothing" ]
534 // },
535 // "UserActivityScreenDimDelayScale": {
536 // "description": "Percentage by which the screen dim delay is scaled
537 // when user activity is observed while the screen is
538 // dimmed or soon after the screen has been turned off",
539 // "type": "integer",
540 // "minimum": 0
541 // }
542 // }
543 // }
544 optional string login_screen_power_management = 1;
545 }
546
547 message AutoCleanupSettigsProto {
548 // Configures strategy for automatic clean-up process that is run when device
549 // runs out of free disk space. One of "remove-lru", "remove-lru-if-dormant".
550 optional string clean_up_strategy = 1;
551 }
552
553 message ChromeDeviceSettingsProto {
554 optional DevicePolicyRefreshRateProto device_policy_refresh_rate = 1;
555 optional UserWhitelistProto user_whitelist = 2;
556 optional GuestModeEnabledProto guest_mode_enabled = 3;
557 optional DeviceProxySettingsProto device_proxy_settings = 4;
558 optional CameraEnabledProto camera_enabled = 5;
559 optional ShowUserNamesOnSigninProto show_user_names = 6;
560 optional DataRoamingEnabledProto data_roaming_enabled = 7;
561 optional AllowNewUsersProto allow_new_users = 8;
562 optional MetricsEnabledProto metrics_enabled = 9;
563 optional ReleaseChannelProto release_channel = 10;
564 optional DeviceOpenNetworkConfigurationProto open_network_configuration = 11;
565 optional DeviceReportingProto device_reporting = 12;
566 optional EphemeralUsersEnabledProto ephemeral_users_enabled = 13;
567 optional AppPackProto app_pack = 14;
568 optional ForcedLogoutTimeoutsProto forced_logout_timeouts = 15;
569 optional ScreenSaverProto login_screen_saver = 16;
570 optional AutoUpdateSettingsProto auto_update_settings = 17;
571 optional StartUpUrlsProto start_up_urls = 18;
572 optional PinnedAppsProto pinned_apps = 19;
573 optional SystemTimezoneProto system_timezone = 20;
574 optional DeviceLocalAccountsProto device_local_accounts = 21;
575 optional AllowRedeemChromeOsRegistrationOffersProto allow_redeem_offers = 22;
576 optional StartUpFlagsProto start_up_flags = 23;
577 optional UptimeLimitProto uptime_limit = 24;
578 optional VariationsParameterProto variations_parameter = 25;
579 optional AttestationSettingsProto attestation_settings = 26;
580 optional AccessibilitySettingsProto accessibility_settings = 27;
581 optional SupervisedUsersSettingsProto supervised_users_settings = 28;
582 optional LoginScreenPowerManagementProto login_screen_power_management = 29;
583 optional SystemUse24HourClockProto use_24hour_clock = 30;
584 optional AutoCleanupSettigsProto auto_clean_up_settings = 31;
585 }
OLDNEW
« no previous file with comments | « chrome/browser/policy/proto/PRESUBMIT.py ('k') | chrome/browser/policy/proto/chromeos/install_attributes.proto » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698