summary refs log tree commit diff
Commit message (Expand)AuthorAgeFilesLines
* Move SQLiteMemoryDbPool implementation into tests.utilsPaul "LeoNerd" Evans2014-09-102-27/+15
* It's considered polite to actually wait for DB prepare before running testsPaul "LeoNerd" Evans2014-09-101-1/+4
* Also test avatar_url profile fieldPaul "LeoNerd" Evans2014-09-101-0/+14
* Tiny trivial PoC unit-test using SQLite in :memory: modePaul "LeoNerd" Evans2014-09-101-0/+78
* prepare_database() on db_conn, not plain name, so we can pass in the connecti...Paul "LeoNerd" Evans2014-09-102-32/+35
* Make sure not to open our TCP ports until /after/ the DB is nicely prepared r...Paul "LeoNerd" Evans2014-09-101-1/+2
* No need for a tiny run() function any more, just use reactor.run() directlyPaul "LeoNerd" Evans2014-09-101-6/+2
* Move database preparing code out of homserver.py into storage where it belongsPaul "LeoNerd" Evans2014-09-103-64/+71
* Add text for incoming callsDavid Baker2014-09-101-0/+1
* Show mxid in call bar for users with no displaynameDavid Baker2014-09-101-1/+6
* Less buggy rejection of calls when busyDavid Baker2014-09-102-13/+20
* reject calls if there's already a call in progressDavid Baker2014-09-101-0/+4
* More rst formatting.Kegan Dougal2014-09-091-5/+6
* Extra restrictions to make parsing easier.Kegan Dougal2014-09-091-1/+8
* TyopsKegan Dougal2014-09-091-7/+7
* Added initial draft for human-readable ID rules.Kegan Dougal2014-09-091-0/+71
* Move model to client-server for now.Kegan Dougal2014-09-097-0/+0
* Hangup call if user denies media access.David Baker2014-09-092-8/+2
* Don't try setting up the call if the user has canceled it before allowing per...David Baker2014-09-091-0/+4
* Don't break if you press the hangup button before allowing media permission.David Baker2014-09-092-2/+3
* Don't play an engaged tone if we hang up locally.David Baker2014-09-093-5/+18
* Fix bug where we used an unbound local variable if we ended up rolling back t...Erik Johnston2014-09-091-4/+1
* Improved room page loading flow: do pagination only when the members list is ...Emmanuel ROHEE2014-09-091-3/+5
* When the user has been kicked or banned from a room, remove the room from his...Emmanuel ROHEE2014-09-091-1/+8
* Made recents list display something when joining a room which we do not have ...Emmanuel ROHEE2014-09-091-0/+8
* BF: prevent joined messages to be displayed twice when joining a room.Emmanuel ROHEE2014-09-091-4/+16
* make calls work in FirefoxDavid Baker2014-09-091-8/+21
* Removed historical code: recents does not need to manage presences. It is alr...Emmanuel ROHEE2014-09-091-6/+0
* BF: Made the grey background of the current room cover all the cell widthEmmanuel ROHEE2014-09-091-1/+1
* Show call invites in the message tableDavid Baker2014-09-092-0/+7
* CSS tweakageKegan Dougal2014-09-081-0/+3
* Display a 'Set Topic' button if there is no topic or it's a 0-len string.Kegan Dougal2014-09-083-11/+30
* Add ability to set topic by double-clicking on the topic text then hitting en...Kegan Dougal2014-09-085-1/+59
* Fixed bug which displayed an older room topic because it was being returned f...Kegan Dougal2014-09-081-1/+13
* long topic is long. CSS support itKegan Dougal2014-09-081-0/+4
* Display public room topics if they exist on the public room list.Kegan Dougal2014-09-082-0/+10
* Display the room topic in the room, underneath the name of the room.Kegan Dougal2014-09-083-8/+33
* Update jsfiddles to have more helpful error messages when there is no connect...Kegan Dougal2014-09-084-5/+30
* Add slightly helpful advice on how to generate config if you don'y already ha...Erik Johnston2014-09-081-0/+1
* Don't autogen config in synctl for the same reasons we don't turn of --genera...Erik Johnston2014-09-081-6/+2
* Apparently we can't do txn.rollback(), so raise and catch an exception instead.Erik Johnston2014-09-081-11/+19
* Added demo.detailsKegan Dougal2014-09-081-0/+7
* Updated jsfiddle links to point to githubKegan Dougal2014-09-081-5/+5
* Bodge to default to '1 users' when you create a room, which is better than bl...Kegan Dougal2014-09-082-1/+6
* Added big massive TODOs on a huge design problem with initial syncKegan Dougal2014-09-082-1/+20
* Float right the num users, apply room highlight to user count.Kegan Dougal2014-09-082-1/+7
* Better checks are better.Kegan Dougal2014-09-081-1/+1
* Added num_joined_users key to /publicRooms for each room. Show this informati...Kegan Dougal2014-09-084-2/+15
* Handle the case where we don't have a common ancestorErik Johnston2014-09-082-9/+42
* Added number of users in recent rooms.Kegan Dougal2014-09-082-0/+16
* Fix bug in state handling where we incorrectly identified a missing pdu. Upda...Erik Johnston2014-09-083-67/+267
* Make #matrix public rooms bold to make them stand out from the other public r...Kegan Dougal2014-09-082-1/+8
* Sort the public room list by display name.Kegan Dougal2014-09-081-1/+1
* Rollback if we try and insert duplicate eventsErik Johnston2014-09-081-0/+1
* Added /join descriptionEmmanuel ROHEE2014-09-081-0/+1
* matrixService.rooms must be renamed matrixService.initialSync nowEmmanuel ROHEE2014-09-082-3/+4
* App startup improvements:Emmanuel ROHEE2014-09-083-39/+39
* add sounds to the calling interfaceDavid Baker2014-09-0811-14/+75
* Merge branch 'origin/release-v0.2.2' into developEmmanuel ROHEE2014-09-080-0/+0
|\
| * fix desktop notifs, which were broken in eab463fdMatthew Hodgson2014-09-062-3/+3
| * Center recaptcha dialog.Kegan Dougal2014-09-061-0/+4
| * Remove disabled change from CHANGESErik Johnston2014-09-061-1/+0
| * disable broken event dup suppression, and fix echo for /meMatthew Hodgson2014-09-062-16/+25
| * Set the room_alias field when we encounter a new one, rather than only from l...Kegan Dougal2014-09-061-2/+1
| * Use the room_display_name when presenting on the home page, and not the room_...Kegan Dougal2014-09-061-1/+1
| * https when loading recaptcha jsKegan Dougal2014-09-061-1/+1
| * Fix race in presence handler where we evicted things from cache while handlin...Erik Johnston2014-09-061-2/+3
| * Bump version and changelogErik Johnston2014-09-063-2/+23
* | fix embarassing bug where in-progress messages get vaped when the previous on...Matthew Hodgson2014-09-081-1/+3
* | fix desktop notifs, which were broken in eab463fdMatthew Hodgson2014-09-082-3/+3
* | Center recaptcha dialog.Kegan Dougal2014-09-081-0/+4
* | Remove disabled change from CHANGESErik Johnston2014-09-081-1/+0
* | disable broken event dup suppression, and fix echo for /meMatthew Hodgson2014-09-082-16/+25
* | Set the room_alias field when we encounter a new one, rather than only from l...Kegan Dougal2014-09-081-2/+1
* | Use the room_display_name when presenting on the home page, and not the room_...Kegan Dougal2014-09-081-1/+1
* | https when loading recaptcha jsKegan Dougal2014-09-081-1/+1
* | Fix race in presence handler where we evicted things from cache while handlin...Erik Johnston2014-09-081-2/+3
* | Bump version and changelogErik Johnston2014-09-083-2/+23
* | Minor spec tweaks.Kegan Dougal2014-09-081-3/+5
* | Revert "BF: Made notification work again (forgot to renamed "offline" to "una...Emmanuel ROHEE2014-09-081-1/+1
* | BF: Made notification work again (forgot to renamed "offline" to "unavailable")Emmanuel ROHEE2014-09-081-1/+1
|/
* dedup all eventsMatthew Hodgson2014-09-061-31/+42
* handle m.room.aliases for id<->alias mapping; remove local_storage map; stop ...Matthew Hodgson2014-09-064-10/+85
* add todoMatthew Hodgson2014-09-061-0/+4
* Fix state unit testErik Johnston2014-09-061-0/+1
* Fix bug where we used an event_id as a pdu_idErik Johnston2014-09-061-3/+5
* Unit tests do not need captchas.Kegan Dougal2014-09-051-0/+1
* Added captcha support on both the HS and web client.Kegan Dougal2014-09-0513-21/+309
|\
| * Added instructions for setting up captcha in an obviously named file.Kegan Dougal2014-09-053-11/+54
| * Reload captchas when they fail. Cleanup on success.Kegan Dougal2014-09-052-2/+11
| * 80 chars pleaseKegan Dougal2014-09-052-11/+23
| * Add config opion for XFF headers when performing ReCaptcha auth.Kegan Dougal2014-09-053-2/+12
| * Captchas now work on registration. Missing x-forwarded-for config arg support...Kegan Dougal2014-09-054-7/+115
| * Added a captcha config to the HS, to enable registration captcha checking and...Kegan Dougal2014-09-055-3/+44
| * Added webclient config.js for storing recaptcha public key.Kegan Dougal2014-09-054-5/+31
| * Modified matrixService.register to specify if captcha results should be sent ...Kegan Dougal2014-09-052-6/+28
| * Added basic captcha, not hooked upKegan Dougal2014-09-053-3/+20
* | Fix generation of event ids so that they are consistent between local and rem...Erik Johnston2014-09-061-1/+4
* | When getting a state event also include the previous contentErik Johnston2014-09-065-13/+43
* | Document new invite key added to createRoom apiErik Johnston2014-09-061-0/+10
* | Add support for inviting people when you create a roomErik Johnston2014-09-061-0/+26
* | Better call bar (visually: still lacks ring[back] tones).David Baker2014-09-067-18/+112
* | Add m.roo.aliasesErik Johnston2014-09-051-0/+16
* | Validate power levels event changes. Change error messages to be more helpful...Erik Johnston2014-09-051-10/+37
* | Generate m.room.aliases event when the HS creates a room aliasErik Johnston2014-09-0510-18/+94
|/
* Merge branch 'develop' of github.com:matrix-org/synapse into developErik Johnston2014-09-0516-246/+578
|\
| * BF: tab completion did not work with commands. $scope.input contained only th...Emmanuel ROHEE2014-09-051-1/+10
| * BF: Update the members list on banned & kicked "events"Emmanuel ROHEE2014-09-051-4/+13
| * autoscroll down(if the scroller was already at the bottom) when receiving mem...Emmanuel ROHEE2014-09-051-13/+18
| * doc: kick can take a reason argEmmanuel ROHEE2014-09-051-1/+1
| * Created kick & unban methods in matrixService. Made some factorisation.Emmanuel ROHEE2014-09-052-23/+24
| * Added sanity checks in commandsEmmanuel ROHEE2014-09-051-34/+55
| * BF: Make /unban work againEmmanuel ROHEE2014-09-052-2/+2
| * Display ban & kick reasonEmmanuel ROHEE2014-09-052-1/+14
| * Fixed empty display name (content.displayname in a room member can be null)Emmanuel ROHEE2014-09-051-1/+3
| * Revert "Fixed empty display name (content.displayname in a room member can be...Emmanuel ROHEE2014-09-051-6/+0
| * Fixed empty display name (content.displayname in a room member can be null)Emmanuel ROHEE2014-09-051-0/+6
| * Add demo/etc to .gitignoreMark Haines2014-09-051-0/+1
| * BF: Fixed members list layout when the scrollbar appearsEmmanuel ROHEE2014-09-051-1/+3
| * BF: Show "Bob invited you" in recents when Bob invites the userEmmanuel ROHEE2014-09-051-1/+5
| * hide the forgot password link until it worksDavid Baker2014-09-051-2/+2
| * Fixed duplicated messages sending in slow network condition.Emmanuel ROHEE2014-09-053-5/+55
| * Cleaned all sending references as it not usedEmmanuel ROHEE2014-09-051-22/+4
| * Do not systematically scroll to the bottom on new events in the roomEmmanuel ROHEE2014-09-051-2/+8
| * merge spec changesMatthew Hodgson2014-09-041-13/+27
| * switch IRC-style command parser to use regexps rather than split(" ") so that...Matthew Hodgson2014-09-042-55/+96
| * Add version 0 of the VoIP specification.David Baker2014-09-041-11/+97
| * Merge branch 'master' into developMark Haines2014-09-040-0/+0
| |\
| | * BF: presence PUT requests stopped to work with old "state" param yesterday ev...Emmanuel ROHEE2014-09-041-1/+1
| | * Fixed registration flow when registering with matrixID & password and no emailEmmanuel ROHEE2014-09-041-1/+1
| | * Merge branch 'develop' of github.com:matrix-org/synapse v0.2.1aErik Johnston2014-09-042-16/+43
| | |\
| * | | BF: presence PUT requests stopped to work with old "state" param yesterday ev...Emmanuel ROHEE2014-09-041-1/+1
| * | | Fixed registration flow when registering with matrixID & password and no emailEmmanuel ROHEE2014-09-041-1/+1
| * | | Added mUserDisplayName, a filter to resolve a user display name from a user_idEmmanuel ROHEE2014-09-042-9/+42
| * | | Moved mRoomName filter into matrix-filter.js, a place for all generic filters...Emmanuel ROHEE2014-09-047-86/+106
| * | | Re-apply fixes to the link-email screen to make it work again (in a somewhat ...David Baker2014-09-042-27/+54
| * | | BF: Do not filter incoming member events. Before, only invitations to the cur...Emmanuel ROHEE2014-09-041-7/+2
| * | | Report ban/unban messages to recents listsEmmanuel ROHEE2014-09-041-8/+19
| | |/ | |/|
* | | Empty string is not a valid JSON object, so don't return them in HTTP responses.Erik Johnston2014-09-053-7/+7
* | | AUth the contents of power level eventsErik Johnston2014-09-051-1/+72
* | | Change the default power levels to be 0, 50 and 100Erik Johnston2014-09-052-10/+10
|/ /
* | Merge branch 'master' of github.com:matrix-org/synapse into developErik Johnston2014-09-044-15/+16
|\|
| * make synctl default to homesever.logMatthew Hodgson2014-09-031-3/+3
| * Merge branch 'release-v0.2.1' v0.2.1Erik Johnston2014-09-03189-1090/+4260
| |\
| | * Bump versions. Update change logs.Erik Johnston2014-09-033-2/+19
* | | big warningMatthew Hodgson2014-09-041-0/+17
* | | target live siteMatthew Hodgson2014-09-041-2/+2
* | | changelog for v0.2.1Matthew Hodgson2014-09-041-0/+16
* | | update README to know about synctlMatthew Hodgson2014-09-041-14/+24
| |/ |/|
* | Added a simple start/stop control scriptPaul "LeoNerd" Evans2014-09-031-0/+38
* | Added a TODO note about YAML modeline for editorsPaul "LeoNerd" Evans2014-09-031-0/+3
* | Error code must be an integerErik Johnston2014-09-031-1/+1
* | Import SynapseErrorErik Johnston2014-09-031-0/+1
* | Handle timeouts slightly nicer.Erik Johnston2014-09-031-1/+5
* | Fix test to assert that we don't do authErik Johnston2014-09-031-1/+1
* | Don't do auth for change_membership in federation handler, it doesn't work an...Erik Johnston2014-09-031-2/+3
* | Hide email link UI from the settings because it doesn't work.David Baker2014-09-031-2/+2
* | When creating a room and a user supplies a room_alias but no name, use the ro...Erik Johnston2014-09-031-0/+11
* | Added more ng-if to make nice sentences like "Bob kicked Alice" or "Bob unba...Emmanuel ROHEE2014-09-031-4/+13
* | better error msgsMatthew Hodgson2014-09-031-3/+3
* | Ignore leave members in the list tooEmmanuel ROHEE2014-09-031-2/+2
* | Fixed used of state_key instead of user_id in member events.Emmanuel ROHEE2014-09-031-4/+7
* | Merge branch 'develop' of github.com:matrix-org/synapse into developDavid Baker2014-09-03168-789/+1898
|\ \
| * | Fix ban pathErik Johnston2014-09-031-1/+1
| * | Add support to _simple_insert() to do INSERT OR REPLACEPaul "LeoNerd" Evans2014-09-031-4/+6
| * | Added federation protocol urls section from other docs.Kegan Dougal2014-09-031-0/+73
| * | Fix a few cases where we used user_id instead of state_keyErik Johnston2014-09-032-6/+6
| * | Marked docs/client-server/specification.rst as old.Kegan Dougal2014-09-031-0/+14
| * | More explanation of federation keys.Kegan Dougal2014-09-031-8/+124
| * | Normalise users power levels so that the user with the higher power level wil...Emmanuel ROHEE2014-09-032-1/+24
| * | Added more terms.Kegan Dougal2014-09-031-4/+68
| * | Implement a kick apiErik Johnston2014-09-031-2/+5
| * | Unindent list in specification to remove blockquoteMark Haines2014-09-031-32/+36
| * | Default PID file should be 'homeserver.pid' to match the other 'homeserver.*'...Paul "LeoNerd" Evans2014-09-031-1/+1
| * | Use /rooms/$room_id/state/m.room.member/$user_id to change the membership of ...Emmanuel ROHEE2014-09-032-3/+15
| * | fix the copyright holder from matrix.org to OpenMarket Ltd, as matrix.org has...Matthew Hodgson2014-09-03152-153/+155
| * | Fix formating for threat modelMark Haines2014-09-031-6/+6
| * | Move securitY threat model docs into specificationMark Haines2014-09-032-141/+124
| * | Limit the size of uploadsMark Haines2014-09-033-1/+55
| * | Bubble up SynapseErrors so expected failures aren't masked.Kegan Dougal2014-09-031-0/+2
| * | Add exception handling to directory servlet, so we don't 500. Mark directory ...Kegan Dougal2014-09-032-2/+18
| * | Fix up directory server to not require uploading room hosts. Update the room ...Erik Johnston2014-09-033-2/+16
| * | List commands and their usage in the settings pageEmmanuel ROHEE2014-09-031-0/+15
| * | Added /kick $user_idEmmanuel ROHEE2014-09-031-4/+14
| * | Handle new state events which don't have a common ancestorErik Johnston2014-09-031-0/+12
| * | Snapshot prev_state for generic eventsErik Johnston2014-09-031-1/+6
| * | Kill the statePaul "LeoNerd" Evans2014-09-035-94/+60
| * | Bugfix for back-pagination of presencePaul "LeoNerd" Evans2014-09-031-0/+2
| * | Added /unban $user_idEmmanuel ROHEE2014-09-031-0/+10
| * | Add support for room namesErik Johnston2014-09-032-2/+20
| * | Make retrying requests on DNS failures configurable, and turn off retrying on...Kegan Dougal2014-09-033-8/+29
| * | Send unrecognized commands as text message (as before)Emmanuel ROHEE2014-09-031-1/+2
| * | Do not define power level limits in setUserPowerLevel. Update the function to...Emmanuel ROHEE2014-09-032-35/+3
| * | Added /deop $user_idEmmanuel ROHEE2014-09-032-3/+36
| * | Store SQL DDL deltas as well; attempt to upgrade the database on startup if i...Paul "LeoNerd" Evans2014-09-034-22/+183
| * | BF: Do not be polluted by ops events that come when paginating backEmmanuel ROHEE2014-09-031-2/+5
| * | hs: Updated synapse.http.client to handle DNSLookupErrors and bail immediately.Kegan Dougal2014-09-031-1/+6
| * | Implement presence state visibilty limiting when polling eventsource for streamPaul "LeoNerd" Evans2014-09-033-15/+147
| * | Don't eat federation transmit errors during unit tests; fix remote presence E...Paul "LeoNerd" Evans2014-09-032-1/+16
| * | Make sure to print exceptions properly from notifier failuresPaul "LeoNerd" Evans2014-09-031-1/+6
| * | apidocs: Added m.room.nameKegan Dougal2014-09-031-0/+62
| * | apidocs: Tweak join response format. Explicitly state empty JSON objects wher...Kegan Dougal2014-09-031-5/+35
| * | Added /op $user_id $powerLevelEmmanuel ROHEE2014-09-033-7/+59
| * | Updated feedback api docs and fixed feedback content template bugKegan Dougal2014-09-032-2/+11
| * | apidocs: mtime_age > last_active_ago. Presence REST: Sanity check values in i...Kegan Dougal2014-09-032-2/+10
| * | Merge branch 'develop' of github.com:matrix-org/synapse into developErik Johnston2014-09-0310-177/+247
| |\ \
| | * | Edited /presence REST servlet to raise SynapseErrors to return a standard err...Kegan Dougal2014-09-031-7/+12
| | * | Update API docs to use 'presence' key not 'state'. Fixed error messages when ...Kegan Dougal2014-09-032-2/+2
| | * | Fixed /presence APIs to urldecode user IDs.Kegan Dougal2014-09-031-1/+5
| | * | Fixed GET /events/$id to be not broken.Kegan Dougal2014-09-031-1/+3
| | * | move contentrepo class to it's own fileMark Haines2014-09-033-163/+194
| | * | URL decode user IDs for /profile REST path segments.Kegan Dougal2014-09-031-0/+6
| | * | Make API docs not lie on registration/login.Kegan Dougal2014-09-032-2/+24
| * | | Add option to change content repo locationErik Johnston2014-09-033-4/+20
| |/ /
| * | Update port numbers.Kegan Dougal2014-09-037-7/+7
| * | Better indicate in the page feedback section that a user can't join a room (b...Emmanuel ROHEE2014-09-031-1/+2
| * | Fill out power level bits in the specErik Johnston2014-09-031-42/+63
| * | Rename the 'do_users_share_a_room' to something slightly less verb-soundingPaul "LeoNerd" Evans2014-09-034-6/+6
| * | Allow optional non-suppression of exceptions through the DistributorPaul "LeoNerd" Evans2014-09-032-7/+34
| * | Neater is_presence_visible() codePaul "LeoNerd" Evans2014-09-031-9/+8
| * | Do not show banned people in member list. Format ban events strings in room a...Emmanuel ROHEE2014-09-033-4/+10
| * | Prefix API links with /docs/api/client-server so they should link through cor...Kegan Dougal2014-09-031-15/+15
| * | cmdclient: Fixed /join to work with the updated c-s API.Kegan Dougal2014-09-031-1/+1
| * | Added /ban commandEmmanuel ROHEE2014-09-032-1/+29
| * | Made IRC style command easier to handle specifically for possible argumentsEmmanuel ROHEE2014-09-031-10/+22
| * | cmdclient: Now works correctly with user localpart login. Default to 8008 not...Kegan Dougal2014-09-031-3/+7
* | | Make registering and logging in with a threepid work in the webclient.David Baker2014-09-035-27/+113
* | | Add support for registering with a threepid to the HS (get credentials from t...David Baker2014-09-033-9/+100
|/ /
* | Merge branch 'master' into developErik Johnston2014-09-037-6/+69
|\|
| * Add database upgrade script v0.2.0Erik Johnston2014-09-021-0/+10
| * Un block quote listErik Johnston2014-09-021-3/+3
| * Try and remove annoying italics in github rst viewerErik Johnston2014-09-021-1/+2
| * Remove an annoying 'the'Erik Johnston2014-09-021-1/+1
| * Don't so heavily suggest you need to edit the default config. List the change...Erik Johnston2014-09-021-3/+7
| * Fix spellingErik Johnston2014-09-021-1/+1
| * Hide the email textbox during registeration has it has not been wired up yet.Erik Johnston2014-09-021-2/+2
| * Bump version and changelogErik Johnston2014-09-024-2/+50
| * Update default endpoint port to match the default ports in the configErik Johnston2014-09-021-2/+2
* | Add ban support: /rooms/$roomid/ban with { user_id : foo }Kegan Dougal2014-09-031-2/+2
* | Add copyright notices and fix pyflakes errorsMark Haines2014-09-037-7/+59
* | Set status message for ratelimit error responsesMark Haines2014-09-033-6/+12
* | Merge branch 'ratelimiting' into developMark Haines2014-09-0314-10/+244
|\ \
| * | Fix tests to support ratelimitingMark Haines2014-09-033-2/+64
| * | Raise LimitExceedError when the ratelimiting is throttling requestsMark Haines2014-09-032-11/+29
| * | rate limiting for message sendingMark Haines2014-09-024-4/+7
| * | Add ratelimiting configMark Haines2014-09-021-0/+21
| * | Add ratelimiting function to basehandlerMark Haines2014-09-025-1/+27
| * | Test ratelimiterMark Haines2014-09-023-19/+87
| * | Ratelimiter objectMark Haines2014-09-021-0/+36
* | | howto: Link jsfiddles correctly. Hide ugly TODOs.Kegan Dougal2014-09-031-10/+22