Home
last modified time | relevance | path

Searched refs:MotionEvent (Results 1 – 25 of 393) sorted by relevance

12345678910>>...16

/frameworks/base/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/
DDoubleTapHelperTest.java31 import android.view.MotionEvent;
83 MotionEvent evDownA = MotionEvent.obtain(downtimeA, in testDoubleTap_success()
85 MotionEvent.ACTION_DOWN, in testDoubleTap_success()
89 MotionEvent evUpA = MotionEvent.obtain(downtimeA, in testDoubleTap_success()
91 MotionEvent.ACTION_UP, in testDoubleTap_success()
95 MotionEvent evDownB = MotionEvent.obtain(downtimeB, in testDoubleTap_success()
97 MotionEvent.ACTION_DOWN, in testDoubleTap_success()
101 MotionEvent evUpB = MotionEvent.obtain(downtimeB, in testDoubleTap_success()
103 MotionEvent.ACTION_UP, in testDoubleTap_success()
130 MotionEvent evDownA = MotionEvent.obtain(downtimeA, in testSingleTap_timeout()
[all …]
/frameworks/base/services/accessibility/java/com/android/server/accessibility/gestures/
DGestureMatcher.java24 import android.view.MotionEvent;
92 @State int state, MotionEvent event, MotionEvent rawEvent, int policyFlags) { in setState()
99 protected final void startGesture(MotionEvent event, MotionEvent rawEvent, int policyFlags) { in startGesture()
104 protected final void cancelGesture(MotionEvent event, MotionEvent rawEvent, int policyFlags) { in cancelGesture()
109 protected final void completeGesture(MotionEvent event, MotionEvent rawEvent, int policyFlags) { in completeGesture()
126 public final int onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) { in onMotionEvent()
131 case MotionEvent.ACTION_DOWN: in onMotionEvent()
134 case MotionEvent.ACTION_POINTER_DOWN: in onMotionEvent()
137 case MotionEvent.ACTION_MOVE: in onMotionEvent()
140 case MotionEvent.ACTION_POINTER_UP: in onMotionEvent()
[all …]
DTouchExplorer.java19 import static android.view.MotionEvent.INVALID_POINTER_ID;
29 import android.view.MotionEvent;
189 MotionEvent event = mState.getLastReceivedEvent(); in clear()
195 private void clear(MotionEvent event, int policyFlags) { in clear()
223 public void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) { in onMotionEvent()
243 if (event.getActionMasked() == MotionEvent.ACTION_CANCEL) { in onMotionEvent()
311 public void onDoubleTapAndHold(MotionEvent event, MotionEvent rawEvent, int policyFlags) { in onDoubleTapAndHold()
319 public boolean onDoubleTap(MotionEvent event, MotionEvent rawEvent, int policyFlags) { in onDoubleTap()
367 public boolean onGestureCancelled(MotionEvent event, MotionEvent rawEvent, int policyFlags) { in onGestureCancelled()
369 endGestureDetection(event.getActionMasked() == MotionEvent.ACTION_UP); in onGestureCancelled()
[all …]
DTouchState.java19 import static android.view.MotionEvent.INVALID_POINTER_ID;
25 import android.view.MotionEvent;
75 private MotionEvent mLastReceivedEvent;
77 private MotionEvent mLastReceivedRawEvent;
81 private MotionEvent mLastInjectedHoverEvent;
83 private MotionEvent mLastInjectedHoverEventForClick;
111 public void onReceivedMotionEvent(MotionEvent rawEvent) { in onReceivedMotionEvent()
118 mLastReceivedEvent = MotionEvent.obtain(rawEvent); in onReceivedMotionEvent()
127 void onInjectedMotionEvent(MotionEvent event) { in onInjectedMotionEvent()
132 case MotionEvent.ACTION_DOWN: in onInjectedMotionEvent()
[all …]
DEventDispatcher.java26 import android.view.MotionEvent;
27 import android.view.MotionEvent.PointerCoords;
28 import android.view.MotionEvent.PointerProperties;
91 MotionEvent prototype, in sendMotionEvent()
93 MotionEvent rawEvent, in sendMotionEvent()
98 MotionEvent event = null; in sendMotionEvent()
109 if (action == MotionEvent.ACTION_DOWN) { in sendMotionEvent()
195 private MotionEvent offsetEvent(MotionEvent event, int offsetX, int offsetY) { in offsetEvent()
211 return MotionEvent.obtain( in offsetEvent()
238 case MotionEvent.ACTION_DOWN: in computeInjectionAction()
[all …]
DGestureUtils.java5 import android.view.MotionEvent;
19 public static boolean isMultiTap(MotionEvent firstUp, MotionEvent secondUp, in isMultiTap()
26 private static boolean eventsWithinTimeAndDistanceSlop(MotionEvent first, MotionEvent second, in eventsWithinTimeAndDistanceSlop()
38 public static double distance(MotionEvent first, MotionEvent second) { in distance()
51 public static double distanceClosestPointerToPoint(PointF pointerDown, MotionEvent moveEvent) { in distanceClosestPointerToPoint()
63 public static boolean isTimedOut(MotionEvent firstUp, MotionEvent secondUp, int timeout) { in isTimedOut()
117 public static int getActionIndex(MotionEvent event) { in getActionIndex()
119 & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; in getActionIndex()
/frameworks/base/services/tests/servicestests/src/com/android/server/accessibility/gestures/
DTouchExplorerTest.java33 import android.view.MotionEvent;
73 private MotionEvent mLastEvent;
88 List<MotionEvent> mEvents = new ArrayList<>();
91 public void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) { in onMotionEvent()
126 MotionEvent.ACTION_DOWN, in testTwoFingersMove_shouldDelegatingAndInjectActionDownPointerDown()
127 MotionEvent.ACTION_POINTER_DOWN); in testTwoFingersMove_shouldDelegatingAndInjectActionDownPointerDown()
148 List<MotionEvent> events = getCapturedEvents(); in clearEventsWhenInTwoFingerMove_clearsStateAndSendsUp()
150 MotionEvent.ACTION_DOWN, in clearEventsWhenInTwoFingerMove_clearsStateAndSendsUp()
151 MotionEvent.ACTION_POINTER_DOWN, in clearEventsWhenInTwoFingerMove_clearsStateAndSendsUp()
152 MotionEvent.ACTION_POINTER_UP, in clearEventsWhenInTwoFingerMove_clearsStateAndSendsUp()
[all …]
/frameworks/base/native/android/
Dinput.cpp37 using android::MotionEvent;
86 return static_cast<const MotionEvent*>(motion_event)->getAction(); in AMotionEvent_getAction()
90 return static_cast<const MotionEvent*>(motion_event)->getFlags(); in AMotionEvent_getFlags()
94 return static_cast<const MotionEvent*>(motion_event)->getMetaState(); in AMotionEvent_getMetaState()
98 return static_cast<const MotionEvent*>(motion_event)->getButtonState(); in AMotionEvent_getButtonState()
102 return reinterpret_cast<const MotionEvent*>(motion_event)->getEdgeFlags(); in AMotionEvent_getEdgeFlags()
106 return static_cast<const MotionEvent*>(motion_event)->getDownTime(); in AMotionEvent_getDownTime()
110 return static_cast<const MotionEvent*>(motion_event)->getEventTime(); in AMotionEvent_getEventTime()
114 return static_cast<const MotionEvent*>(motion_event)->getXOffset(); in AMotionEvent_getXOffset()
118 return static_cast<const MotionEvent*>(motion_event)->getYOffset(); in AMotionEvent_getYOffset()
[all …]
/frameworks/base/core/tests/coretests/src/android/widget/
DEditorTouchStateTest.java27 import android.view.MotionEvent;
64 MotionEvent event1 = downEvent(event1Time, event1Time, 20f, 30f); in testUpdate_singleTap()
70 MotionEvent event2 = upEvent(event1Time, event2Time, 20f, 30f); in testUpdate_singleTap()
76 MotionEvent event3 = downEvent(event3Time, event3Time, 22f, 33f); in testUpdate_singleTap()
85 MotionEvent event1 = downEvent(event1Time, event1Time, 20f, 30f); in testUpdate_doubleTap_sameArea()
91 MotionEvent event2 = upEvent(event1Time, event2Time, 20f, 30f); in testUpdate_doubleTap_sameArea()
97 MotionEvent event3 = downEvent(event3Time, event3Time, 22f, 33f); in testUpdate_doubleTap_sameArea()
107 MotionEvent event1 = downEvent(event1Time, event1Time, 20f, 30f); in testUpdate_doubleTap_notSameArea()
113 MotionEvent event2 = upEvent(event1Time, event2Time, 20f, 30f); in testUpdate_doubleTap_notSameArea()
119 MotionEvent event3 = downEvent(event3Time, event3Time, 200f, 300f); in testUpdate_doubleTap_notSameArea()
[all …]
/frameworks/base/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/
DClassifierTest.java22 import android.view.MotionEvent;
35 private List<MotionEvent> mMotionEvents = new ArrayList<>();
68 for (MotionEvent motionEvent : mMotionEvents) { in resetDataProvider()
77 MotionEvent appendDownEvent(float x, float y) { in appendDownEvent()
78 return appendMotionEvent(MotionEvent.ACTION_DOWN, x, y); in appendDownEvent()
81 MotionEvent appendDownEvent(float x, float y, long eventTime) { in appendDownEvent()
82 return appendMotionEvent(MotionEvent.ACTION_DOWN, x, y, eventTime); in appendDownEvent()
85 MotionEvent appendMoveEvent(float x, float y) { in appendMoveEvent()
86 return appendMotionEvent(MotionEvent.ACTION_MOVE, x, y); in appendMoveEvent()
89 MotionEvent appendMoveEvent(float x, float y, long eventTime) { in appendMoveEvent()
[all …]
DPointerCountClassifierTest.java25 import android.view.MotionEvent;
64 MotionEvent.PointerProperties[] pointerProperties = in testFail_multiPointer()
65 MotionEvent.PointerProperties.createArray(2); in testFail_multiPointer()
68 MotionEvent.PointerCoords[] pointerCoords = MotionEvent.PointerCoords.createArray(2); in testFail_multiPointer()
69 MotionEvent motionEvent = MotionEvent.obtain( in testFail_multiPointer()
70 1, 1, MotionEvent.ACTION_DOWN, 2, pointerProperties, pointerCoords, 0, 0, 0, 0, 0, in testFail_multiPointer()
80 MotionEvent.PointerProperties[] pointerProperties = in testPass_multiPointerDragDown()
81 MotionEvent.PointerProperties.createArray(2); in testPass_multiPointerDragDown()
84 MotionEvent.PointerCoords[] pointerCoords = MotionEvent.PointerCoords.createArray(2); in testPass_multiPointerDragDown()
85 MotionEvent motionEvent = MotionEvent.obtain( in testPass_multiPointerDragDown()
[all …]
DFalsingDataProviderTest.java25 import android.view.MotionEvent;
64 List<MotionEvent> motionEventList = mDataProvider.getRecentMotionEvents(); in test_trackMotionEvents()
67 assertThat(motionEventList.get(0).getActionMasked(), is(MotionEvent.ACTION_DOWN)); in test_trackMotionEvents()
68 assertThat(motionEventList.get(1).getActionMasked(), is(MotionEvent.ACTION_MOVE)); in test_trackMotionEvents()
69 assertThat(motionEventList.get(2).getActionMasked(), is(MotionEvent.ACTION_UP)); in test_trackMotionEvents()
85 List<MotionEvent> motionEventList = mDataProvider.getRecentMotionEvents(); in test_trackRecentMotionEvents()
88 assertThat(motionEventList.get(0).getActionMasked(), is(MotionEvent.ACTION_DOWN)); in test_trackRecentMotionEvents()
89 assertThat(motionEventList.get(1).getActionMasked(), is(MotionEvent.ACTION_MOVE)); in test_trackRecentMotionEvents()
101 assertThat(motionEventList.get(0).getActionMasked(), is(MotionEvent.ACTION_MOVE)); in test_trackRecentMotionEvents()
102 assertThat(motionEventList.get(1).getActionMasked(), is(MotionEvent.ACTION_UP)); in test_trackRecentMotionEvents()
[all …]
/frameworks/base/packages/SystemUI/src/com/android/systemui/classifier/brightline/
DTimeLimitedMotionEventBuffer.java19 import android.view.MotionEvent;
34 public class TimeLimitedMotionEventBuffer implements List<MotionEvent> {
36 private final LinkedList<MotionEvent> mMotionEvents;
49 Iterator<MotionEvent> iter = listIterator(); in ejectOldEvents()
52 MotionEvent ev = iter.next(); in ejectOldEvents()
61 public void add(int index, MotionEvent element) { in add()
66 public MotionEvent remove(int index) { in remove()
96 public Iterator<MotionEvent> iterator() { in iterator()
111 public boolean add(MotionEvent element) { in add()
128 public boolean addAll(Collection<? extends MotionEvent> collection) { in addAll()
[all …]
DFalsingDataProvider.java20 import android.view.MotionEvent;
21 import android.view.MotionEvent.PointerCoords;
22 import android.view.MotionEvent.PointerProperties;
49 private MotionEvent mFirstActualMotionEvent;
50 private MotionEvent mFirstRecentMotionEvent;
51 private MotionEvent mLastMotionEvent;
63 void onMotionEvent(MotionEvent motionEvent) { in onMotionEvent()
64 if (motionEvent.getActionMasked() == MotionEvent.ACTION_DOWN) { in onMotionEvent()
68 List<MotionEvent> motionEvents = unpackMotionEvent(motionEvent); in onMotionEvent()
71 for (MotionEvent m : motionEvents) { in onMotionEvent()
[all …]
/frameworks/base/core/tests/coretests/src/android/view/
DPinchZoomAction.java60 final MotionEvent.PointerProperties pp1 = new MotionEvent.PointerProperties(); in sendPinchZoomAction()
62 pp1.toolType = MotionEvent.TOOL_TYPE_FINGER; in sendPinchZoomAction()
63 final MotionEvent.PointerProperties pp2 = new MotionEvent.PointerProperties(); in sendPinchZoomAction()
65 pp2.toolType = MotionEvent.TOOL_TYPE_FINGER; in sendPinchZoomAction()
66 MotionEvent.PointerProperties[] pointerProperties = in sendPinchZoomAction()
67 new MotionEvent.PointerProperties[]{pp1, pp2}; in sendPinchZoomAction()
70 final MotionEvent.PointerCoords pc1 = new MotionEvent.PointerCoords(); in sendPinchZoomAction()
75 final MotionEvent.PointerCoords pc2 = new MotionEvent.PointerCoords(); in sendPinchZoomAction()
83 final MotionEvent.PointerCoords[] pointerCoords = new MotionEvent.PointerCoords[]{pc1, pc2}; in sendPinchZoomAction()
85 final MotionEvent firstFingerEvent = MotionEvent.obtain(startTime, in sendPinchZoomAction()
[all …]
DMotionEventTest.java19 import static android.view.MotionEvent.ACTION_DOWN;
20 import static android.view.MotionEvent.ACTION_POINTER_DOWN;
21 import static android.view.MotionEvent.TOOL_TYPE_FINGER;
29 import android.view.MotionEvent.PointerCoords;
30 import android.view.MotionEvent.PointerProperties;
63 MotionEvent motionEvent = MotionEvent.obtain(0, 0, ACTION_DOWN, in testObtainWithDisplayId()
67 MotionEvent motionEvent_Single = MotionEvent.obtain(0 /* downTime */, 0 /* eventTime */, in testObtainWithDisplayId()
83 motionEvent = MotionEvent.obtain(0, 0, ACTION_DOWN, in testObtainWithDisplayId()
91 final MotionEvent event = MotionEvent.obtain(0 /* downTime */, 0 /* eventTime */, in testCalculatesCursorPositionForTouchscreenEvents()
101 final MotionEvent event = MotionEvent.obtain(0 /* downTime */, 0 /* eventTime */, in testCalculatesCursorPositionForSimpleMouseEvents()
[all …]
DViewGroupTest.java64 MotionEvent.PointerProperties[] properties = new MotionEvent.PointerProperties[2]; in testDispatchMouseEventsUnderCursor()
65 properties[0] = new MotionEvent.PointerProperties(); in testDispatchMouseEventsUnderCursor()
67 properties[0].toolType = MotionEvent.TOOL_TYPE_FINGER; in testDispatchMouseEventsUnderCursor()
68 properties[1] = new MotionEvent.PointerProperties(); in testDispatchMouseEventsUnderCursor()
70 properties[1].toolType = MotionEvent.TOOL_TYPE_FINGER; in testDispatchMouseEventsUnderCursor()
72 MotionEvent.PointerCoords[] coords = new MotionEvent.PointerCoords[2]; in testDispatchMouseEventsUnderCursor()
73 coords[0] = new MotionEvent.PointerCoords(); in testDispatchMouseEventsUnderCursor()
76 coords[1] = new MotionEvent.PointerCoords(); in testDispatchMouseEventsUnderCursor()
80 MotionEvent event; in testDispatchMouseEventsUnderCursor()
83 event = MotionEvent.obtain(0 /* downTime */, 0 /* eventTime */, MotionEvent.ACTION_DOWN, in testDispatchMouseEventsUnderCursor()
[all …]
/frameworks/base/core/java/android/view/
DGestureDetector.java73 boolean onDown(MotionEvent e); in onDown()
83 void onShowPress(MotionEvent e); in onShowPress()
92 boolean onSingleTapUp(MotionEvent e); in onSingleTapUp()
109 boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY); in onScroll()
117 void onLongPress(MotionEvent e); in onLongPress()
132 boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY); in onFling()
151 boolean onSingleTapConfirmed(MotionEvent e); in onSingleTapConfirmed()
159 boolean onDoubleTap(MotionEvent e); in onDoubleTap()
168 boolean onDoubleTapEvent(MotionEvent e); in onDoubleTapEvent()
183 boolean onContextClick(MotionEvent e); in onContextClick()
[all …]
DInputEventConsistencyVerifier.java180 final MotionEvent motionEvent = (MotionEvent)event; in onInputEvent()
262 public void onTrackballEvent(MotionEvent event, int nestingLevel) { in onTrackballEvent()
274 case MotionEvent.ACTION_DOWN: in onTrackballEvent()
284 case MotionEvent.ACTION_UP: in onTrackballEvent()
294 case MotionEvent.ACTION_MOVE: in onTrackballEvent()
298 problem("Invalid action " + MotionEvent.actionToString(action) in onTrackballEvent()
326 public void onTouchEvent(MotionEvent event, int nestingLevel) { in onTouchEvent()
332 final boolean newStream = action == MotionEvent.ACTION_DOWN in onTouchEvent()
333 || action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_OUTSIDE; in onTouchEvent()
364 case MotionEvent.ACTION_DOWN: in onTouchEvent()
[all …]
/frameworks/base/services/accessibility/java/com/android/server/accessibility/
DFullScreenMagnificationGestureHandler.java20 import static android.view.MotionEvent.ACTION_CANCEL;
21 import static android.view.MotionEvent.ACTION_DOWN;
22 import static android.view.MotionEvent.ACTION_MOVE;
23 import static android.view.MotionEvent.ACTION_POINTER_DOWN;
24 import static android.view.MotionEvent.ACTION_POINTER_UP;
25 import static android.view.MotionEvent.ACTION_UP;
52 import android.view.MotionEvent;
53 import android.view.MotionEvent.PointerCoords;
54 import android.view.MotionEvent.PointerProperties;
160 private final Queue<MotionEvent> mDebugInputEventHistory;
[all …]
DMotionEventInjector.java33 import android.view.MotionEvent;
65 private static MotionEvent.PointerCoords[] sPointerCoords;
66 private static MotionEvent.PointerProperties[] sPointerProps;
114 public void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) { in onMotionEvent()
120 && event.getActionMasked() == MotionEvent.ACTION_HOVER_MOVE) in onMotionEvent()
158 MotionEvent motionEvent = (MotionEvent) message.obj; in handleMessage()
203 List<MotionEvent> events = getMotionEventsFromGestureSteps(gestureSteps, in injectEventsMainThread()
212 MotionEvent event = events.get(i); in injectEventsMainThread()
291 private void sendMotionEventToNext(MotionEvent event, MotionEvent rawEvent, in sendMotionEventToNext()
295 if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { in sendMotionEventToNext()
[all …]
/frameworks/base/core/java/android/widget/
DForwardingListener.java20 import android.view.MotionEvent;
84 public boolean onTouch(View v, MotionEvent event) { in onTouch()
95 final MotionEvent e = MotionEvent.obtain(now, now, MotionEvent.ACTION_CANCEL, in onTouch()
113 mActivePointerId = MotionEvent.INVALID_POINTER_ID; in onViewDetachedFromWindow()
160 private boolean onTouchObserved(MotionEvent srcEvent) { in onTouchObserved()
168 case MotionEvent.ACTION_DOWN: in onTouchObserved()
181 case MotionEvent.ACTION_MOVE: in onTouchObserved()
197 case MotionEvent.ACTION_CANCEL: in onTouchObserved()
198 case MotionEvent.ACTION_UP: in onTouchObserved()
235 final MotionEvent e = MotionEvent.obtain(now, now, MotionEvent.ACTION_CANCEL, 0, 0, 0); in onLongPress()
[all …]
/frameworks/base/packages/EasterEgg/src/com/android/egg/paint/
DSpotFilter.kt21 import android.view.MotionEvent
24 val spots = LinkedList<MotionEvent.PointerCoords>() // newest at front
25 val tmpSpot = MotionEvent.PointerCoords()
26 var lastTool = MotionEvent.TOOL_TYPE_UNKNOWN
32 fun plot(s: MotionEvent.PointerCoords) in plot()
40 fun filterInto(out: MotionEvent.PointerCoords, tool: Int): MotionEvent.PointerCoords { in filterInto()
65 if (PRECISE_STYLUS_INPUT && tool == MotionEvent.TOOL_TYPE_STYLUS) { in filterInto()
78 protected fun addInternal(c: MotionEvent.PointerCoords, tool: Int) { in addInternal()
83 MotionEvent.PointerCoords() in addInternal()
93 fun add(cv: List<MotionEvent.PointerCoords>, tool: Int) { in add()
[all …]
/frameworks/base/packages/SystemUI/src/com/android/systemui/classifier/
DClassifierData.java20 import android.view.MotionEvent;
41 public boolean update(MotionEvent event) { in update()
45 if (event.getActionMasked() == MotionEvent.ACTION_MOVE in update()
54 if (action == MotionEvent.ACTION_DOWN) { in update()
66 if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL in update()
67 || (action == MotionEvent.ACTION_POINTER_UP && i == event.getActionIndex())) { in update()
75 public void cleanUp(MotionEvent event) { in cleanUp()
80 if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL in cleanUp()
81 || (action == MotionEvent.ACTION_POINTER_UP && i == event.getActionIndex())) { in cleanUp()
/frameworks/base/core/java/com/android/internal/widget/
DDecorCaptionView.java25 import android.view.MotionEvent;
146 public boolean onInterceptTouchEvent(MotionEvent ev) { in onInterceptTouchEvent()
149 if (ev.getAction() == MotionEvent.ACTION_DOWN) { in onInterceptTouchEvent()
164 public boolean onTouchEvent(MotionEvent event) { in onTouchEvent()
168 if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) { in onTouchEvent()
177 public boolean onTouch(View v, MotionEvent e) { in onTouch()
183 final boolean fromMouse = e.getToolType(e.getActionIndex()) == MotionEvent.TOOL_TYPE_MOUSE; in onTouch()
184 final boolean primaryButton = (e.getButtonState() & MotionEvent.BUTTON_PRIMARY) != 0; in onTouch()
187 case MotionEvent.ACTION_DOWN: in onTouch()
201 case MotionEvent.ACTION_MOVE: in onTouch()
[all …]

12345678910>>...16